Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SQL Server中,如何计算一个月内有多少个星期日?_Sql Server_Count_Dayofweek_Days - Fatal编程技术网

Sql server 在SQL Server中,如何计算一个月内有多少个星期日?

Sql server 在SQL Server中,如何计算一个月内有多少个星期日?,sql-server,count,dayofweek,days,Sql Server,Count,Dayofweek,Days,这里只有一个星期天,但我无法计算一个月有多少个星期天: select dateadd(dd, 8 - datepart(dw, '2019-11-01'), '2019-11-01') 这很简单,因为WW在DATEDIFF中的工作方式 注:起始日期不包括在内,因此为-1 SELECT DATEDIFF(ww, CAST('20081228' AS datetime)-1, '20090131') AS NumOfSundays 就是 DATEDIFF(ww, @dt1-1, @dt

这里只有一个星期天,但我无法计算一个月有多少个星期天:

select dateadd(dd, 8 - datepart(dw, '2019-11-01'), '2019-11-01')

这很简单,因为WW在DATEDIFF中的工作方式 注:起始日期不包括在内,因此为-1

SELECT 
    DATEDIFF(ww, CAST('20081228' AS datetime)-1, '20090131') AS NumOfSundays
就是

DATEDIFF(ww, @dt1-1, @dt2) 
要在此示例中获取当前_时间戳的一个月的开始和结束时间,请执行以下操作:

SELECT 
     DATEADD(month, DATEDIFF(month, 0, CURRENT_TIMESTAMP), 0) AS StartOfMonth
    ,EOMONTH(CURRENT_TIMESTAMP) AS EndOfMonth 
注: WW不返回整周数,但事实上它确实返回星期日数,除非第一个日期是星期日

和-1之所以有效,是因为DATETIME可转换为浮动,其中整数部分是自1900/01/01以来的天数。逗号后面的部分是以24小时的分数表示的时间

从,它使用相同的datediff函数:

但是,如果interval为Week ww,则DateDiff函数将返回 两个日期之间的日历周数。它计算数字 在日期1和日期2之间的星期日。DateDiff计数date2(如果落下) 星期天;但它不包括日期1,即使它落在 星期天

我通过减去第1天来减去日期中任何月份的第一天

我使用递归CTE添加天数,直到第二天超出当前月份

然后我在我的数据集中计算DATENAME Sunday

可能重复的数据
DECLARE @MONTH as DATE = '20191225';   --any date in the month


;WITH THEMONTH AS (SELECT DATEADD(day,1 - DAY(@MONTH) , @MONTH) AS x
   UNION ALL
     SELECT DATEADD(day,1, x) FROM THEMONTH WHERE MONTH(DATEADD(day,1, x)) = MONTH(x))

             select count(*) from THEMONTH  WHERE  DATENAME(weekday, x)  ='sunday';