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

标签 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)

我收到下面的消息说

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/

相关文章:

mysql - 将一列分成两列的更新?

mysql - 在 Symfony2 查询生成器中使用多个 ->setParameters

php - Magento 安装脚本中的 ALTER TABLE 不使用 SQL

sql - SQL中出现重复行的原因是什么?

sql-server - 如何在单个事务中以流畅的方式运行多个普通 sql 查询?

sql-server - SQL Server : How to select missing rows in table from another table?

sql - 存储总值或在运行时求和的最佳实践

sql-server - 使用 TRANSACT-SQL 将节点添加到 XML

python - 使用 pyodbc 备份 MS SQL 数据库

c# - SQL Server 管理对象 (SMO) 的默认约束不一致