最近我在 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中部署时会抛出错误。
日期和日期时间数据类型在加法运算符中不兼容。
但仅当查询单独放置时才能正常工作。
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)
然后使用dateaddselect 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。 - S3S+
。在第二个SQL中,你没有把它们加在一起,无论+
存在什么问题,在这个SQL中显然都不存在。你在这里问的问题是什么?基本上SQL Server告诉你不能将日期(DATE)和日期时间(DATETIME)相加(+
)。那么你要如何修复它呢?修复什么? - Lasse V. Karlsen