我查询哪个是在excel文件中写的。
查询看起来像这样
EXEC sp_makewebtask @outputfile = 'e:\Testing.xls',
@query = ' SELECT top 10 *
FROM [myDB].[dbo].[TOTALS_DAY]
WHERE [START_DATETIME] < '20140501'',
@FixedFont=0,
@lastupdated=0,
@resultstitle = 'Testing details'
如果我注释掉它生成的where子句,但是我必须使用date,当我指定date时它会抛出我的错误。
Msg 102,Level 15,State 1,Line 5
&#39; 20140501&#39;附近的语法不正确。
如何解决这个问题?
答案 0 :(得分:4)
你写了2'',试试这个:
DECLARE @date DATETIME
set @date = '20140501'
EXEC sp_makewebtask @outputfile = 'e:\Testing.xls',
@query = ' SELECT top 10 *
FROM [myDB].[dbo].[TOTALS_DAY]
where [START_DATETIME] < @date,
@FixedFont=0,
@lastupdated=0,
@resultstitle='Testing details'
我希望这有帮助
答案 1 :(得分:1)
看起来你有无意中匹配的引号。由于您在单引号中围绕SQL语句,因此查询被解释为
' SELECT top 10 *
FROM [myDB].[dbo].[TOTALS_DAY]
where [START_DATETIME] < '
这意味着什么。由于日期应该是单引号,是否可以将@query
的值用双引号括起来?像这样:
EXEC sp_makewebtask @outputfile = 'e:\Testing.xls',
@query = " SELECT top 10 *
FROM [myDB].[dbo].[TOTALS_DAY]
where [START_DATETIME] < '20140501'",
@FixedFont=0,
@lastupdated=0,
@resultstitle='Testing details'
答案 2 :(得分:1)
还有额外的单引号尝试:
EXEC sp_makewebtask @outputfile = 'e:\Testing.xls',
@query = ' SELECT top 10 *
FROM [myDB].[dbo].[TOTALS_DAY]
where [START_DATETIME] < '20140501',
@FixedFont=0,
@lastupdated=0,
@resultstitle='Testing details'
答案 3 :(得分:0)
我做了不同的方式,因为带有日期时间格式的变量声明对我来说没有用,我找到了解决方法并且这样做了
EXEC sp_makewebtask
@outputfile = 'e:\VT_TOTALS_DAY_en_US.xls',
@query = 'SELECT * from
FROM [myDB].[dbo].[TOTALS_DAY]
where [START_DATETIME] < DATEADD(DAY, -20, GETDATE())',
@lastupdated=0,
@resultstitle='Testing details'
必须使用DATEADD(DAY, -20, GETDATE())
才能获得2014-05-01