数据类型 date 和 datetime 在 add 运算符中不兼容
The data types date and datetime are incompatible in the add operator
我最近在 SQL Server 2008 开发环境中创建了一个像这样连接日期和时间的函数
select cast('2016-11-09 15:35:00' AS DATE) + CAST('00:00:00' AS DATETIME)
在 SQL Server 2008 中运行良好,但部署在 SQL Server 2016 中会引发错误
The data types date and datetime are incompatible in the add operator.
但只有在单独放置查询时才有效
select cast('2016-11-09 15:35:00' AS DATE)
select CAST('00:00:00' AS DATETIME)
所以,我该如何解决这个问题。我发现有人说 TIME
数据类型不兼容的文章,但我没有使用它。其实我的拼接是这样的
WHERE
CREATIONDATE BETWEEN CAST(@CurrentDate AS DATE) + CAST('00:00:00' AS DATETIME) AND CAST(@CurrentDate AS DATE) + CAST('23:59:59' AS DATETIME)
其中 @CurrentDate
是一个 DateTime
变量并作为 '2016-11-09 15:35:00'
传递给我的函数
我无法修改 SQL Server 2016 框的配置。我该如何修复我的代码?
谢谢
只需将其转换为日期,然后转换为日期时间。
select cast(cast('2016-11-09 15:35:00' as date) as datetime)
要多获得 1 天,请使用:
dateadd select dateadd(dd,1,cast(cast('2016-11-09 15:35:00' as date) as datetime))
我不太喜欢 between 运算符,所以当我处理日期时间时,我倾向于使用 > startDate 和 < endDate,其中 endDate 是第二天,所以 11/10 就像说 <= 11 /0923:59:59
我最近在 SQL Server 2008 开发环境中创建了一个像这样连接日期和时间的函数
select cast('2016-11-09 15:35:00' AS DATE) + CAST('00:00:00' AS DATETIME)
在 SQL Server 2008 中运行良好,但部署在 SQL Server 2016 中会引发错误
The data types date and datetime are incompatible in the add operator.
但只有在单独放置查询时才有效
select cast('2016-11-09 15:35:00' AS DATE)
select CAST('00:00:00' AS DATETIME)
所以,我该如何解决这个问题。我发现有人说 TIME
数据类型不兼容的文章,但我没有使用它。其实我的拼接是这样的
WHERE
CREATIONDATE BETWEEN CAST(@CurrentDate AS DATE) + CAST('00:00:00' AS DATETIME) AND CAST(@CurrentDate AS DATE) + CAST('23:59:59' AS DATETIME)
其中 @CurrentDate
是一个 DateTime
变量并作为 '2016-11-09 15:35:00'
我无法修改 SQL Server 2016 框的配置。我该如何修复我的代码?
谢谢
只需将其转换为日期,然后转换为日期时间。
select cast(cast('2016-11-09 15:35:00' as date) as datetime)
要多获得 1 天,请使用:
dateadd select dateadd(dd,1,cast(cast('2016-11-09 15:35:00' as date) as datetime))
我不太喜欢 between 运算符,所以当我处理日期时间时,我倾向于使用 > startDate 和 < endDate,其中 endDate 是第二天,所以 11/10 就像说 <= 11 /0923:59:59