当我尝试在我的 SQL 语句中使用动态查询代码时
Declare @Start datetimeoffset;
Declare @End datetimeoffset;
Declare @SqlCommand nvarchar(Max);
Set @Start = '2013-05-17 10:00:04.500 +00:00';
Set @End = '2013-09-17 10:00:04.500 +00:00'
Set @SqlCommand = 'Select * from Test where TimeLine > '+ @Start+' AND TimeLine < '+@End
Exec(@SqlCommand)
我收到下面的消息说
Msg 402, Level 16, State 1, Line 8
The data types varchar and datetimeoffset are incompatible in the add operator.
请指导我正确的用法。
最佳答案
您需要将 DateTimeOffset 值转换为 varchars。 此外,您还缺少额外的引号。
有点像
Declare @Start datetimeoffset = '2013-05-17 10:00:04.500 +00:00'
Declare @End datetimeoffset = '2013-09-17 10:00:04.500 +00:00'
Declare @SqlCommand nvarchar(Max)
Set @SqlCommand = 'Select * from Test where SampleTime > '''+ CAST(@Start AS VARCHAR(50))+''' AND SampleTime < '''+CAST(@End AS VARCHAR(50)) + ''''
SELECT @SqlCommand
SQL Fiddle DEMO
关于sql - 数据类型 varchar 和 datetimeoffset 在 add 运算符中不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18782489/