当前位置: 代码迷 >> Sql Server >> 求帮忙一个拼接SQL语句有关问题
  详细解决方案

求帮忙一个拼接SQL语句有关问题

热度:45   发布时间:2016-04-24 09:17:07.0
求帮忙一个拼接SQL语句问题
select CONVERT(datetime, @StartAQTime,20)  -----------------这样运行没有问题  @StartAQTime传递进来的时间参数 (传递进来字符串也可)
set @strSQL = 'SELECT Top 1 [AcquisitionTime] FROM   [dbo].[DataInfo] WHERE  [AcquisitionTime] >='''+CONVERT(datetime, @StartAQTime,20)+'''' 
-----------------------AcquisitionTime 为时间类型列 这样就一直提示“从字符串转换日期和/或时间时,转换失败” 
请教 要在拼接SQL语句比较时间怎么写呢? 多谢了
------解决思路----------------------
CONVERT(datetime, @StartAQTime,20) 改为  CONVERT(varchar(30),@StartAQTime,20)
------解决思路----------------------
如果你的@StartAQTime是字符串,可以不用转换格式
在查询的时候,在需要转换的上下文环境下,系统会自动转成日期

会报这个错,是因为在SQLSERVER中日期的优先级高于字符串,如果拿日期去和字符串相加,系统默认会把字符串转换成日期进行运算,很显然 
'SELECT Top 1 [AcquisitionTime] FROM   [dbo].[DataInfo] WHERE  [AcquisitionTime] >='''
这段字符串转换不了日期
------解决思路----------------------
你目前的方法,在动态SQL外面把参数转换为时间类型,但是只有字符串类型才能进行拼接。
我觉得应该这样处理,把@StartAQTime参数设置为字符串类型,比如varchar(30)。然后,这样拼接语句:
set @strSQL = 'SELECT Top 1 [AcquisitionTime] FROM   [dbo].[DataInfo] WHERE  [AcquisitionTime] >= CONVERT(datetime,''' + @StartAQTime + ''',20)'
  相关解决方案