查找一个月内 ISO 周数的函数

问题描述 投票:0回答:1

在 T-SQL 中,我需要查找一个月中的 ISO 周数。

根据客户规范,一周属于该周编号为星期日的月份。

例如,2024 年第 5 周属于二月,而不是一月,因为 2 月 4 日星期日是二月。

上下文:我需要使用它根据该月每周指定的人员需求来查找给定月份的平均人员需求,如以下简化的伪代码所示:

WeeklyStaffingNeedsTotal / GetNumberOfIsoWeeksInMonth(年,月) AS MonthlyStaffingNeed

t-sql iso8601
1个回答
0
投票

不是完整答案(问题不清楚) 我不清楚你需要什么以及如何过滤,但这是一个脚本,包含一年中的日期列表,其中包含 weekname 、 day 和 day name (以防万一) 这就是你的起点


DECLARE @MinDate DATETIME = '2024-1-1 00:02:00.000',
    @MaxDate DATETIME = '2024-12-31 00:00:00.000';
Select * from (
    select 
        dates, 
        WeekNumber = datepart(wk, dates),
        DayNumber = datepart(day, dates),
        DayName = FORMAT(CAST(dates AS DATE), 'ddd')
    from (
        SELECT  TOP (DATEDIFF(DAY, @MinDate, @MaxDate) + 1) Dates = DATEADD(DAY, ROW_NUMBER() OVER(ORDER BY a.object_id) - 1, @MinDate)
        FROM sys.all_objects a CROSS JOIN sys.all_objects b
    ) c
) w

结果将是

| dates                   | WeekNumber | DayNumber | DayName |
| ----------------------- | ---------- | --------- | ------- |
| 2024-01-01 00:02:00.000 | 1          |    1      | Mon     |
| 2024-01-02 00:02:00.000 | 1          |    2      | Tue     |
| 2024-01-03 00:02:00.000 | 1          |    3      | Wed     |

© www.soinside.com 2019 - 2024. All rights reserved.