=Start=
缘由:
在使用内部的日期维度表时突然想到的一个问题,感觉可以借助通义千问这种对话式的大语言模型来帮忙快速实现。
另外想说的就是,因为国内的节假日安排涉及到调休(每年都还不完全一样),所以一般只能等当年的11月份左右才会出第2年的放假安排通知之后才能基本确定(如果有任何更新或变化,请以最新的官方公告为准)。
这种操作后面也可以借助LLM agent(s)来实现完整的自动化流程。
正文:
参考解答:
question
请问如何获取2025年中国大陆的法定节假日信息?
answer
2025年中国大陆的法定节假日安排如下,根据国务院办公厅发布的通知整理:
- 元旦:1月1日(周三)放假1天,不调休。
- 春节:从1月28日(农历除夕、周二)至2月4日(农历正月初七、周二)放假调休,共8天。其中1月26日(周日)、2月8日(周六)需要上班。
- 清明节:4月4日(周五)至6日(周日)放假,共3天。
- 劳动节:5月1日(周四)至5日(周一)放假调休,共5天。其中4月27日(周日)需要上班。
- 端午节:5月31日(周六)至6月2日(周一)放假,共3天。
- 国庆节与中秋节合并:10月1日(周三)至8日(周三)放假调休,共8天。其中9月28日(周日)、10月11日(周六)需要上班。
以上信息是基于当前已发布的官方文件。如果有任何更新或变化,请以最新的官方公告为准。在这些节假日期间,各地区和部门会妥善安排值班和其他必要的工作,确保公共安全和服务的连续性。
question2
根据上面的内容,请问可以用下面的形式帮忙整理出2025年中国大陆的法定节假日列表吗?
YYYY-MM-DD, YYYYMMDD, 星期几, 是否法定节假日
2025-01-01, 20250101, 3, 1
answer2
根据之前提供的中国大陆2025年法定节假日信息,以下是按照您指定格式整理的列表。请注意,星期几是以1表示星期一,7表示星期日。
YYYY-MM-DD, YYYYMMDD, 星期几, 是否法定节假日
2025-01-01, 20250101, 3, 1 -- 元旦
2025-01-28, 20250128, 2, 1 -- 春节假期开始(除夕)
2025-01-29, 20250129, 3, 1
2025-01-30, 20250130, 4, 1
2025-01-31, 20250131, 5, 1
2025-02-01, 20250201, 6, 1
2025-02-02, 20250202, 7, 1
2025-02-03, 20250203, 1, 1
2025-02-04, 20250204, 2, 1 -- 春节假期结束
2025-04-04, 20250404, 5, 1 -- 清明节假期开始
2025-04-05, 20250405, 6, 1
2025-04-06, 20250406, 7, 1 -- 清明节假期结束
2025-05-01, 20250501, 4, 1 -- 劳动节假期开始
2025-05-02, 20250502, 5, 1
2025-05-03, 20250503, 6, 1
2025-05-04, 20250504, 7, 1 -- 劳动节假期结束
2025-05-05, 20250505, 1, 1
2025-05-31, 20250531, 6, 1 -- 端午节假期开始
2025-06-01, 20250601, 7, 1
2025-06-02, 20250602, 1, 1 -- 端午节假期结束
2025-10-01, 20251001, 3, 1 -- 国庆节与中秋节合并假期开始
2025-10-02, 20251002, 4, 1
2025-10-03, 20251003, 5, 1
2025-10-04, 20251004, 6, 1
2025-10-05, 20251005, 7, 1
2025-10-06, 20251006, 1, 1
2025-10-07, 20251007, 2, 1
2025-10-08, 20251008, 3, 1 -- 国庆节与中秋节合并假期结束
请注意,这里的星期几是基于假设2025年的实际日期和星期匹配来填写的。如果需要确切的星期几,请根据实际的日历进行核对。此外,国庆节和中秋节合并假期的具体安排可能会有变化,因此建议以官方最终公布的信息为准。
然后再借助一段SQL来生成完整的2025年日期列表,再和上面的这部分内容做 left outer join 补全法定节假日的信息即可完成一开始的目标——“如何生成一张(有法定节假日信息的)日期维度表”。
-- 因为内置的 dayofweek 函数是以星期天为 1 开始计算的第几天,所以当前直接在其结果上减一,更符合国内的习惯
-- 或者也可以直接使用 weekday 函数加一的结果,这样星期天就是 7 而不是减一之后的 0 了
with t as (
select '2025-01-01' as dt_start, '2025-12-31' as dt_end
)
select
idx
,date_add(to_date(dt_start), idx) as dt
,date_format(date_add(to_date(dt_start), idx), 'yyyyMMdd') as date
,dayofweek(date_add(to_date(dt_start), idx))-1 as week_num
,weekday(date_add(to_date(dt_start), idx))+1 as week_num2 --速度有点慢
from t
lateral view posexplode(split(space(datediff(t.dt_end,t.dt_start)),' ')) pi as idx, empty
;
YYYY-MM-DD, YYYYMMDD, day_of_week, is_holiday, remark
2025-01-01, 20250101, 3, 1, 元旦
2025-01-26, 20250126, 7, 0, 春节假期调休
2025-01-28, 20250128, 2, 1, 春节(除夕)
2025-01-29, 20250129, 3, 1, 春节
2025-01-30, 20250130, 4, 1, 春节
2025-01-31, 20250131, 5, 1, 春节
2025-02-01, 20250201, 6, 1, 春节
2025-02-02, 20250202, 7, 1, 春节
2025-02-03, 20250203, 1, 1, 春节
2025-02-04, 20250204, 2, 1, 春节
2025-02-08, 20250208, 6, 0, 春节假期调休
2025-04-04, 20250404, 5, 1, 清明节
2025-04-05, 20250405, 6, 1, 清明节
2025-04-06, 20250406, 7, 1, 清明节
2025-04-27, 20250427, 7, 0, 劳动节假期调休
2025-05-01, 20250501, 4, 1, 劳动节
2025-05-02, 20250502, 5, 1, 劳动节
2025-05-03, 20250503, 6, 1, 劳动节
2025-05-04, 20250504, 7, 1, 劳动节
2025-05-05, 20250505, 1, 1, 劳动节
2025-05-31, 20250531, 6, 1, 端午节
2025-06-01, 20250601, 7, 1, 端午节
2025-06-02, 20250602, 1, 1, 端午节
2025-09-28, 20250928, 7, 0, 国庆节与中秋节合并假期调休
2025-10-01, 20251001, 3, 1, 国庆节与中秋节合并
2025-10-02, 20251002, 4, 1, 国庆节与中秋节合并
2025-10-03, 20251003, 5, 1, 国庆节与中秋节合并
2025-10-04, 20251004, 6, 1, 国庆节与中秋节合并
2025-10-05, 20251005, 7, 1, 国庆节与中秋节合并
2025-10-06, 20251006, 1, 1, 国庆节与中秋节合并
2025-10-07, 20251007, 2, 1, 国庆节与中秋节合并
2025-10-08, 20251008, 3, 1, 国庆节与中秋节合并
2025-10-11, 20251011, 6, 0, 国庆节与中秋节合并假期调休
参考链接:
datediff 函数
https://learn.microsoft.com/zh-cn/azure/databricks/sql/language-manual/functions/datediff
dayofweek 函数
https://learn.microsoft.com/zh-cn/azure/databricks/sql/language-manual/functions/dayofweek
weekday 函数
https://learn.microsoft.com/zh-cn/azure/databricks/sql/language-manual/functions/weekday
春节8天,劳动节5天……2025年法定节假日安排出炉
https://mp.weixin.qq.com/s?__biz=MzI3MTQ0MzM2OA==&mid=2247508458&idx=1&sn=a3a34ea5adaff5fe741d8601f2862115
=END=
《“如何生成一张(有法定节假日信息的)日期维度表?”》 有 1 条评论
上面只是把法定节假日标记出来了,但是没有把放长假之后需要调休上班的周末的日期给标记出来,因此再整理一下prompt来修补这个问题。
question1:
请问2025年中国大陆的法定节假日和对应的调休安排是什么样的?
question2:
根据上面的内容,还请帮忙用下面的形式整理出2025年中国大陆的法定节假日和对应的调休安排列表:
“`
YYYY-MM-DD, YYYYMMDD, day_of_week, is_holiday, remark
2025-01-01, 20250101, 3, 1, 元旦
2025-01-26, 20250126, 7, 0, 春节假期调休
“`
answer2:
根据您提供的格式要求,以下是2025年中国大陆的法定节假日和对应的调休安排列表:
“`
YYYY-MM-DD, YYYYMMDD, day_of_week, is_holiday, remark
2025-01-01, 20250101, 3, 1, 元旦
2025-01-26, 20250126, 7, 0, 春节假期调休
2025-01-28, 20250128, 2, 1, 春节(除夕)
2025-01-29, 20250129, 3, 1, 春节
2025-01-30, 20250130, 4, 1, 春节
2025-01-31, 20250131, 5, 1, 春节
2025-02-01, 20250201, 6, 1, 春节
2025-02-02, 20250202, 7, 1, 春节
2025-02-03, 20250203, 1, 1, 春节
2025-02-04, 20250204, 2, 1, 春节
2025-02-08, 20250208, 6, 0, 春节假期调休
2025-04-04, 20250404, 5, 1, 清明节
2025-04-05, 20250405, 6, 1, 清明节
2025-04-06, 20250406, 7, 1, 清明节
2025-04-27, 20250427, 7, 0, 劳动节假期调休
2025-05-01, 20250501, 4, 1, 劳动节
2025-05-02, 20250502, 5, 1, 劳动节
2025-05-03, 20250503, 6, 1, 劳动节
2025-05-04, 20250504, 7, 1, 劳动节
2025-05-05, 20250505, 1, 1, 劳动节
2025-05-31, 20250531, 6, 1, 端午节
2025-06-01, 20250601, 7, 1, 端午节
2025-06-02, 20250602, 1, 1, 端午节
2025-09-28, 20250928, 7, 0, 国庆节与中秋节合并假期调休
2025-10-01, 20251001, 3, 1, 国庆节与中秋节合并
2025-10-02, 20251002, 4, 1, 国庆节与中秋节合并
2025-10-03, 20251003, 5, 1, 国庆节与中秋节合并
2025-10-04, 20251004, 6, 1, 国庆节与中秋节合并
2025-10-05, 20251005, 7, 1, 国庆节与中秋节合并
2025-10-06, 20251006, 1, 1, 国庆节与中秋节合并
2025-10-07, 20251007, 2, 1, 国庆节与中秋节合并
2025-10-08, 20251008, 3, 1, 国庆节与中秋节合并
2025-10-11, 20251011, 6, 0, 国庆节与中秋节合并假期调休
“`