如何确定日期是奇数周还是偶数周?

Ahm*_*met 0 sql sql-server stored-procedures

在我的表格中,我每天都有:

Id_______Startdate _______ EndDate __________MondayMorning _____MondayEvening ___TuMorning  ....  
121 _____2012-01-01________2012-12-31 ________2 ___________________2______________2   
122 _____2012-02-01________2012-08-05 ________1 ___________________2______________3   
Run Code Online (Sandbox Code Playgroud)

我已经使用 Startdate 和 EndDate 生成了日期列表。

我想知道这个日期是属于奇数周还是偶数周,以便我可以从输出中过滤数字为 3 或 1 的日期(请参阅第二条记录)。

如何过滤属于编号为 1 和 3 的奇数周和偶数周的日期?

Lit*_*les 5

您可以datepartwk参数一起使用来确定周数:

 SELECT datepart(wk, YourDate) 
Run Code Online (Sandbox Code Playgroud)

从那里,您可以使用模数来确定周数是偶数还是奇数:

 SELECT datepart(wk, YourDate) % 2
Run Code Online (Sandbox Code Playgroud)

对于偶数周,这将返回 0;对于奇数周,这将返回 1。

  • 我会提到“SET DATEFIRST”,因为此设置从根本上控制“DATEPART(wk)”的工作方式。另外,并非所有系统都将 1 月 1 日作为 week1 - 有些系统将至少 4 天所在的年份分配为一周。因此,1 月 1 日可能是上一年的第 53 周... (3认同)