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)'