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

时间:2016-11-09 19:41:16

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

在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)

那么,我该如何解决这个问题。我发现人们说与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)

其中@CurrentDateDateTime变量,并作为'2016-11-09 15:35:00'传递给我的函数

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

由于

1 个答案:

答案 0 :(得分:1)

将其投射为日期,然后投放日期时间。

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

我不是运营商之间的忠实粉丝所以当我处理日期时我倾向于使用> startDate和< endDate endDate是第二天,所以11/10就像是在说< = 11/09 23:59:59