2016-03-24 9 views
-1

ファイルを保存できません。私はvarchar型の値を変換するときにこのエラーDATEをVARCHARに変換するBCP

エラー= [Microsoft]の[SQL ServerのODBCドライバー11] [SQL サーバー]
は、変換が失敗した取得理由

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 

私は知りません'a'をデータ型intに変換します。

答えて

0

一重引用符がありません。あなたの最初のクエリがINTである1989年に2016年3月24日の結果ので、これはエラーになります。

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

のようなものを書いていた

この

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 
をお試しください

今ではあなたはあなたの引用符の外にこの部分を持って

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

のようになります:

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

それはSQLによって評価されるので、それを引用符で囲む必要があります。

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

また、日付をcharにキャストするために、より小さなサイズを考慮する必要があります。いつあなたはchar(200)の結果を得ますか?

関連する問題