数据类型 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