2016-03-24 23 views
-1

Dosyasını kaydedemiyor.BCP DATE - VARCHAR

DECLARE @allquery varchar(8000) 

SET @allquery = ' bcp "SELECT ''a'' UNION ALL SELECT ' + CAST(CAST(GETDATE()as date) as char(200)) + ' FROM rozklad.dbo.rozklad" queryout D:\bcp\tmp.txt -S '[email protected]@SERVERNAME+' -T -w -t,' 

exec xp_cmdshell @allquery 

bu hatayı alıyorum neden bilmiyorum

Hata = [Microsoft] [ODBC SQL Server için Sürücü 11] [SQL Server] varchar değeri dönüştürürken
Dönüşüm başarısız int türetmek için 'a'. Bazı tek tırnaklar eksik.

cevap

0

Bu

DECLARE @allquery varchar(8000) 
SET @allquery = ' bcp "SELECT ''a'' UNION ALL SELECT ''' + CAST(CAST(GETDATE()as date) as char(200)) + ''' FROM rozklad.dbo.rozklad" queryout D:\bcp\tmp.txt -S '[email protected]@SERVERNAME+' -T -w -t,' 
exec xp_cmdshell @allquery 

Başlangıçtaki sorgu hatayla

SELECT 'a' 
UNION ALL 
SELECT 2016-03-24 

Bu sonuçları gibi bir şey yazıyordu deneyin bir INT olduğu 1989 yılında 2016/03/24 sonuçları çünkü. o SQL tarafından değerlendirilir, böylece

CAST(CAST(GETDATE()as date) as char(200)) 

Bu tırnak içinde olması gerekir: Eğer tırnak dışında bu bölümü var

SELECT 'a' 
UNION ALL 
SELECT '2016-03-24' 
0

gibi

Şimdi öyle olacak.

"SELECT ''a'' UNION ALL SELECT CAST(CAST(GETDATE()as date) as char(200)) FROM ... 

Ayrıca, tarihleriniz için daha kük bir boyut düşünülmelidir. Ne zaman sonuç verirsiniz, char (200)?