数据类型 date 和 datetime 在 add 运算符中不兼容

Max*_*mus 7 sql-server datetime types sqldatatypes sql-server-2016

我最近在 SQL Server 2008 开发环境中创建了一个像这样连接日期和时间的函数

select cast('2016-11-09 15:35:00' AS DATE) + CAST('00:00:00' AS DATETIME)
Run Code Online (Sandbox Code Playgroud)

在 SQL Server 2008 中它运行良好,但在 SQL Server 2016 中部署它会引发错误

数据类型 date 和 datetime 在 add 运算符中不兼容。

但只有在单独放置查询时它才能很好地工作

select cast('2016-11-09 15:35:00' AS DATE)
select CAST('00:00:00' AS DATETIME)
Run Code Online (Sandbox Code Playgroud)

那么,我该如何解决这个问题。我发现有人说与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)
Run Code Online (Sandbox Code Playgroud)

where@CurrentDate是一个DateTime变量并作为'2016-11-09 15:35:00'传递给我的函数

我无法修改 SQL Server 2016 框的配置。我该如何修复我的代码?

谢谢

scs*_*mon 4

只需将其转换为日期,然后转换为日期时间即可。

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/09 23:59 :59