BCP 将 DATE 转换为 VARCHAR
BCP converting DATE to 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 '+@@SERVERNAME+' -T -w -t,'
exec xp_cmdshell @allquery
我收到这个错误
Error = [Microsoft][ODBC Driver 11 for SQL Server][SQL
Server]
Conversion failed when converting the varchar value 'a' to datatype 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,它是一个 INT。
现在会像
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) 的结果?
我无法保存文件。不知道为什么
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
我收到这个错误
Error = [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]
Conversion failed when converting the varchar value 'a' to datatype 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,它是一个 INT。
现在会像
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) 的结果?