我无法保存文件。我不知道为什么
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。
答案 0 :(得分:0)
您缺少一些单引号。试试这个
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年的INT。
现在就像
SELECT 'a'
UNION ALL
SELECT '2016-03-24'
答案 1 :(得分: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)?
的结果