首页 > 解决方案 > 获取一年中的第一个和最后一个日历日

问题描述

我正在寻找一种方法来获取甲骨文给定年份的法语语言环境中的第一个和最后一个日历日。

例如,2020 年的第一个日历日是 30/12/2019(因为它是 2020 年第 1 周的星期一),最后一个日历日是 03/01/2021(因为它是 2020 年第 53 周的星期日)。

我有很多针对 2020 年 1 月 1 日和 2020 年 12 月 31 日的解决方案,但没有针对日历的第一天和最后一天。

我尝试使用 to_dateselect trunc(to_date('1 2020','IW YYYY'), 'YEAR') from dual;但得到 ORA-01820 错误代码。select to_date('1 2020','DDD YYYY') from dual;我得到了 01/01/20 00:00:00

谢谢你的帮助。

标签: sqloracledate

解决方案


你可以这样做:

select 
    trunc(date'2020-01-01', 'IW') first_calendar_day_2020, 
    trunc(date'2020-12-31', 'IW') + 6 last_calendar_day_2020
from dual

IW为您提供相应日期的 ISO 周的第一天。如果您想要该周的星期日,您可以添加 6 天。

DB Fiddle 上的演示

FIRST_CALENDAR_DAY_2020 | LAST_CALENDAR_DAY_2020
:------------------------ | :---------
19 年 12 月 30 日 | 21 年 1 月 3 日             

推荐阅读