我希望使用以下规则计算"年度会计周“:
- 会计年度始终从6月1日开始
- 一周总是从星期日开始
- 提供了2019年的样本,但理想情况下,它应该适用于任何一年
随附屏幕截图提供了几个正确值的示例
我尝试执行类似于TO_NUMBER(TO_CHAR(TO_DATE(DATE_ID + 1,'DD-Mon-YY'),'IW'))-21的操作,但在日历年结束时,我开始得到否定的结果
SELECT
DATE_ID
, WEEK_OF_YEAR
FROM DATE_DIM
WHERE
DATE_ID IN
(
20190601
, 20190602
, 20190915
, 20191228
, 20191229
, 20200101
, 20200601
, 20200606
, 20200607
)
ORDER BY DATE_ID ASC
;
3条答案
按热度按时间63lcw9qa1#
或者像你这样,
如果你不喜欢ISO日期法,即第一周是从星期天开始的一周,而星期天是一年中的第一天,你可以试着通过将它移回到前一个星期天(TRUNC(..,'D'),然后提前一周,再加上7个月来抵消它。
yjghlzjz2#
你对你的日期格式感到困惑(“yyyymmdd”与“DD-Mon-YY”),所以我在回答中使用了一个真实的日期(mydate)。将你的字符串或数字转换成正确的日期,你就可以得到:-)
最重要的是检查你的日期是否〉= 6月1日。一旦完成了这一步,你就可以减去当年的6月1日或前一年的6月1日。嗯,差不多:-)
演示:https://dbfiddle.uk/N5pX_5cV
2uluyalo3#
更新的答案
你可以试试这个-提供日期像31-MAY-19开始你的日历从01-JUN-19和定义多少天你想要的。有一个5个月的转变,因为代码是从我的常规日历和调整开始的一周到星期日...测试OK的期间长达2年每次运行。所以如果你想要6年,你必须运行这3次...
回复:
.到2025年----上文评论中提到的结果的一部分.