需要像weekNumber
那样找到1,2,3,4
,但该周从日期列开始于星期三,以星期二结束,在第4周之后,该周又从第1周重新开始,依此类推(无需考虑月份)。
只需基于Period
查找weekNumber
,则4个周期为1个周期,并且以13结尾的周期(周期1-13)将在第1个周期重新开始。
(4周= 1个周期)(无需考虑月份)。
现在需要基于businessyear
计算Period
。 13个周期作为一个businessyear
。 (13个周期= 1年)
计算逻辑:
示例:
Datekey date Year semistor Quarter Month DayName DayNum Wnumber
20090101 01-01-2009 2009 1 1 January 1 Thursday 1 0
20090102 02-01-2009 2009 1 1 January 1 Friday 2 0
20090103 03-01-2009 2009 1 1 January 1 Saturday 3 0
20090104 04-01-2009 2009 1 1 January 1 Sunday 0
20090105 05-01-2009 2009 1 1 January 1 Monday 0
20090106 06-01-2009 2009 1 1 January 1 Tuesday 6 0
20090107 07-01-2009 2009 1 1 January 1 Wednesday 0 0
20090108 08-01-2009 2009 1 1 January 1 Thursday 1 1
20090109 09-01-2009 2009 1 1 January 1 Friday 2 1
20090110 10-01-2009 2009 1 1 January 1 Saturday 3 1
20090111 11-01-2009 2009 1 1 January 1 Sunday 4 1
20090112 12-01-2009 2009 1 1 January 1 Monday 5 1
20090113 13-01-2009 2009 1 1 January 1 Tuesday 6 1
20090114 14-01-2009 2009 1 1 January 1 Wednesday 0 1
在我的情况下无需考虑月份,也需要考虑leap年(2016、2020)。
答案 0 :(得分:0)
执行此类操作的传统方法是在数据库中创建日历表。然后,您的查询可以简单地JOIN
进入日历表以提取相关值。
我发现创建calendar
表的最简单方法是使用Excel 。只需编写一些提供所需值的公式,然后复制下一个十年左右的时间即可。然后,将工作表另存为CSV并将其加载到数据库中。
这样,您可以完全避免涉及数据库功能的复杂计算,并且可以使用所需的任何规则。