CAST(DateColumn AS DATE)和DATEADD(DD,DATEDIFF(DD,0,DateColumn()),0之间的区别

时间:2016-11-18 10:20:18

标签: sql sql-server-2012

我想知道

之间的区别
SELECT CAST(DateColumn AS DATE) 

SELECT DATEADD(DD, DATEDIFF(DD, 0, DateColumn()), 0)

我的计算很长,看起来像这样:

sum(case when DATEADD(dd, DATEDIFF(dd, 0,ModifiedOn), 0) between DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0) AND DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0) -7 THEN 1 ELSE 0 END) [0-7 Days]

我想知道上面的DateAdd和DateDiff组合(广泛用于剥离时间)与Cast(DateColumn as Date)相比有什么不同?

会有区别吗?对我来说它看起来是一样的,但只是想确保它们都做同样的事情,所以我可以实现后者。

ModifiedOn Column是DateTime类型

谢谢

1 个答案:

答案 0 :(得分:2)

他们都做同样的事情。

SQL Server在2008版本中引入了date数据类型。在以前的版本中,没有“方便”的方法从datetime值中删除时间组件。解决方案是从一些规范的时间点(比如“0”)计算天数,然后再添加这些天数。