我最近在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)
其中@CurrentDate
是DateTime
变量,并作为'2016-11-09 15:35:00'传递给我的函数
我无法修改SQL Server 2016框的配置。我该如何修复我的代码?
由于
答案 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