Sql server BCP将日期转换为VARCHAR
我无法保存文件。我不知道为什么Sql server BCP将日期转换为VARCHAR,sql-server,tsql,bcp,Sql Server,Tsql,Bcp,我无法保存文件。我不知道为什么 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 '+@@SERVERNAME+' -T -w -t,' exec xp_cmdshell
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 '+@@SERVERNAME+' -T -w -t,'
exec xp_cmdshell @allquery
我得到这个错误
错误=[Microsoft][SQL Server的ODBC驱动程序11][SQL
服务器]将varchar值“a”转换为数据类型int时,转换失败
您缺少一些单引号。试试这个
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 '+@@SERVERNAME+' -T -w -t,'
exec xp_cmdshell @allquery
您最初的查询是这样写的
SELECT 'a'
UNION ALL
SELECT 2016-03-24
这导致了一个错误,因为2016-03-24的结果是1989年的整数
现在就好像
SELECT 'a'
UNION ALL
SELECT '2016-03-24'
您的报价之外有此部分:
CAST(CAST(GETDATE()as date) as char(200))
它应该在引号内,以便由SQL进行计算
"SELECT ''a'' UNION ALL SELECT CAST(CAST(GETDATE()as date) as char(200)) FROM ...
此外,你应该考虑一个较小的大小,以便你的日期到字符。什么时候会有一个char(200)的结果