计算查询中不同天数

Rob*_*ert 3 t-sql sql-server-2008

我们有一个表,StartDate其中包含一个包含日期时间类型的字段.有成千上万的记录,我正在寻找一种方法来查找从该表返回的给定结果中的天数.例如,如果我的表有这些数据:

ID | StartDate
--------------
1   01/01/2013 09:34:54
2   01/01/2013 11:23:21
3   04/11/2013 14:43:23
4   04/11/2013 17:13:03
5   04/25/2013 18:02:59
6   07/21/2013 02:56:12
7   10/01/2013 19:43:10
Run Code Online (Sandbox Code Playgroud)

然后查询应返回5,因为2013年1月1日的2个日期计为1,而对于04/11/2013则相同.

我能想出的唯一一个SQL是:

SELECT COUNT(DISTINCT(DATEPART(DAY, StartDate)))
FROM Stats
WHERE StartDate BETWEEN '01/01/2013' AND '12/31/2013' --This is just for filtering
Run Code Online (Sandbox Code Playgroud)

但这会返回4,因为它不会考虑月份.

任何帮助表示赞赏.

Mar*_*ith 10

你可以CAST约会

SELECT COUNT(DISTINCT CAST(StartDate AS DATE))
FROM   Stats
WHERE  StartDate >= '20130101' AND StartDate < '20140101' 
Run Code Online (Sandbox Code Playgroud)

也可以使用明确的日期格式,例如yyyymmdd>= <BETWEEN.

您当前的查询将包括12月31日,如果有一行确切的值,20131231 00:00:00但没有任何在该日期的不同时间.我怀疑这是故意的.