1

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

4

2 回答 2

1

假设 2008+

SELECT COUNT(DISTINCT (CAST (CreatedOn AS DATE))) AS NumberOfDays
FROM YourTable
于 2012-06-26T10:26:28.913 回答
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

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

于 2012-06-26T10:27:10.937 回答