2016-11-18 26 views
0

我想知道差(DD,DATEDIFF(DD,0,DateColumn()),0)

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列是DateTime类型

谢谢

回答

2

他们都做同样的事情。

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

+0

谢谢,只需要澄清和确认 – abs786123