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
但没有任何在该日期的不同时间.我怀疑这是故意的.