我有一个名为CreatedOn
的字段,其值为:
2012-06-19 08:42:48.000
2012-06-19 08:43:05.000
2012-06-19 08:43:27.000
2012-06-19 08:53:22.000
...
2012-06-20 09:20:54.000
2012-06-20 09:21:13.000
...
2012-06-21 10:02:17.000
2012-06-21 11:43:19.000
...
2012-06-22 12:00:40.000
2012-06-22 12:11:56.000
... (weekend)
2012-06-25 13:00:13.000
2012-06-25 13:12:24.000
...
2012-06-26 13:41:27.000
2012-06-26 13:41:44.000
2012-06-26 13:42:01.000
我希望输出显示 - 6
(天)。但它并不像不计算周末一样简单,因为可能还有其他日子没有计算,最好的方法是确保根据数据来做。
有什么想法吗?
我能够:DATEDIFF(w, MIN(CreatedOn), MAX(CreatedOn))
但是如上所述,它不准确,它显示没有相应数据的日期,
答案 0 :(得分:1)
假设2008 +
SELECT COUNT(DISTINCT (CAST (CreatedOn AS DATE))) AS NumberOfDays
FROM YourTable
答案 1 :(得分:0)
你想计算有任何活动的日子吗?以下内容比需要的稍微复杂一些:
select COUNT(*) from (
select DATEADD(day,DATEDIFF(day,0,CreatedOn),0) as dt,COUNT(*) as cnt
from Table
group by DATEADD(day,DATEDIFF(day,0,CreatedOn),0)
) dayCounts
但如果您需要有关特定日期的更多详细信息,则可以重新使用内部查询。