0

我正在尝试开发一个需要表示规则的调度应用程序,例如“此事件发生在该月的第 2 和第 4 个星期三”或“此事件发生在该月的奇数星期六(即第 1、3 和第 5 个星期六)。

为此,我需要在 T-SQL 中编写一个函数,该函数接受一个 Date 输入并返回一个整数,该整数表示该日期在月份中的哪个日期。

例如,如果我发送函数 2012 DEC 21,它将返回 3,因为 2012 年 12 月 21 日是该月的第三个星期五。鉴于 2012 DEC 29,它将返回 5,因为 2012 年 12 月 29 日是该月的第 5 个星期六。

我想在不求助于预先填充的日历表的情况下执行此操作。我可能想使用该函数来处理历史日期,例如计算 1958 年 7 月 16 日是哪个星期三。

4

1 回答 1

1

试试这个:

SELECT ((DATEPART(d, @input) - 1) / 7) + 1

我们不关心一周中的实际日期,只关心每月第一天过去的天数(即天值 - 1)。然后一个整数除以 7 得到一个月第一天之后的周数,最后 + 1 让它从 1 而不是 0 开始。

于 2012-12-04T23:39:02.287 回答