要获取播种的所有日期,您可以使用以下内容:
Select DateAdd (D, ROW_NUMBER() Over (Order By C1.Ordinal_Position), '12/31/1999') DateValue
From INFORMATION_SCHEMA.COLUMNS C1, INFORMATION_SCHEMA.COLUMNS C2
如果您在列太少的数据库中运行上述查询,则将 FROM 更改为。笛卡尔积 FTW
From INFORMATION_SCHEMA.COLUMNS C1, INFORMATION_SCHEMA.COLUMNS C2,
INFORMATION_SCHEMA.COLUMNS C3, INFORMATION_SCHEMA.COLUMNS C4
现在,您需要一周中的另一天作为第一天。所以请阅读SET DATEFIRST。这使您可以将特定会话的第一天设置为 TSQL。
然后,您可以使用DATEPART获取您需要的其他列。
结合三者得到你的答案。我将为您提供如何使这项工作的示例 - 您可以在查询中使用 DATEADD 来获取 Start-Of-Week 和 End-Of-Week 值,并使用 DATEPART 来获取 Week-Of-Year 和 YearN-琥珀色
SET DATEFIRST 3 -- put your corresponding day here
;With AllDates AS
(
Select
DateAdd (D, ROW_NUMBER() Over (Order By C1.Ordinal_Position), '12/31/1999') DateValue
From INFORMATION_SCHEMA.COLUMNS C1
),
AllDatesWithWeekDayNumber AS
(
Select
DateValue,
DatePart (weekday, DateValue) WeekDayNumber
From AllDates
)
Select * From AllDatesWithWeekDayNumber