如何计算一个领域的价值存在的天数

时间:2012-06-26 10:23:32

标签: sql sql-server datetime

我有一个名为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))但是如上所述,它不准确,它显示没有相应数据的日期,

2 个答案:

答案 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

但如果您需要有关特定日期的更多详细信息,则可以重新使用内部查询。