查询中的语法不正确,即将数据加载到excel文件中

时间:2014-05-20 20:41:24

标签: sql excel sql-server-2008-r2

我查询哪个是在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;附近的语法不正确。

如何解决这个问题?

4 个答案:

答案 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