none
错误提示“'00' 附近有语法错误。” RRS feed

  • 问题

  • 我在存储过程里写的一个根据提供的时间和站名来查询数据
    declare @start_time nvarchar(30)

    declare @end_time nvarchar(30)

    declare @realtable nvarchar(30)

    declare @sql nvarchar(1000)

    set @start_time ='2009-07-14 00:00:00'

    set @end_time ='2009-07-14 22:00:00'

    set @realtable ='z_测试站7'

    print @realtable

    set @sql='SELECT top 1 日期,管网压力,门磁 FROM '+ @realtable +' where 日期 between '+ @start_time+' and '+ @end_time

    print @sql

    exec (@sql)

    我在执行的时候提示我
    消息 102,级别 15,状态 1,第 1 行
    z_测试站7
    SELECT top 1 日期,管网压力,门磁 FROM z_测试站7 where 日期 between 2009-07-14 00:00:00 and 2009-07-14 22:00:00 --这句是我用print输出出来, 我没什么错呀
    消息 102,级别 15,状态 1,第 1 行
    '00' 附近有语法错误。

    我 z_测试站7 表里的日期类型为 [日期] [datetime]
    是转换的时候出错了吗??
    各位老师该怎样解决?
    2009年11月11日 9:38

答案

  • set @sql='SELECT top 1 日期,管网压力,门磁 FROM '+ @realtable +' where 日期 between '''+ @start_time+''' and '''+ @end_time+''''

    More: blog.csdn.net/happyflystone
    • 已标记为答案 猫色色 2009年11月12日 6:13
    2009年11月12日 3:05

全部回复

  • Shoul be

    SELECT top 1 日期,管网压力,门磁 FROM z_测试站7 where 日期 between '2009-07-14 00:00:00' and '2009-07-14 22:00:00'

    Try this:

    set @start_time ='''2009-07-14 00:00:00'''

    set @end_time ='''2009-07-14 22:00:00'''
    2009年11月11日 15:30
  • set @sql='SELECT top 1 日期,管网压力,门磁 FROM '+ @realtable +' where 日期 between '''+ @start_time+''' and '''+ @end_time+''''

    More: blog.csdn.net/happyflystone
    • 已标记为答案 猫色色 2009年11月12日 6:13
    2009年11月12日 3:05
  • 这是因为你忘了给日期的值加引号,因为日期的值是nvarchar, 需要以字符串的形式,系统才会转换成datetime形式。
    把下面的语句
    SELECT top 1 日期,管网压力,门磁 FROM z_测试站7 where 日期 between 2009-07-14 00:00:00 and 2009-07-14 22:00:00
    改为
    SELECT top 1 日期,管网压力,门磁 FROM z_测试站7 where 日期 between '2009-07-14 00:00:00' and '2009-07-14 22:00:00'
    即可。
    2009年11月12日 5:54