数据类型 varchar 和 datetimeoffset 在 add 运算符中不兼容

Zay*_*yar 3 sql sql-server

当我尝试在我的 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)
Run Code Online (Sandbox Code Playgroud)

我收到以下消息说

消息 402,级别 16,状态 1,第 8 行
数据类型 varchar 和 datetimeoffset 在 add 运算符中不兼容。

请指导我正确的用法。

Adr*_*der 5

您需要将 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
Run Code Online (Sandbox Code Playgroud)

SQL小提琴演示