数据库增加2024,2025年所有法定节假日并去除调休SQL

本文介绍了在数据库中为考虑法定节假日和调休日期的需求,提供了一段SQL脚本,用于插入2024年所有调休及节假日的日期,以便在业务逻辑中处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求背景

在很多业务场景中,需要特殊考虑到一些特殊的法定节假日,这些日期在实际对的业务逻辑中需要特殊计算,所以就需要在对应的库表中增加对应的日期记录,在实际操作时进行绕过

实现方式

在数据库中根据国家规定增加对应日期的调休,即周末也可能为工作日的情况,本次操作执行参考2024年所有调休以及法定节假日(包含双休),使用sql插入数据,有需要可以根据以下SQL进行调整

2025放假安排及对应SQL

2025放假安排

2025年国家增加了两天法定节假,真是可喜可乐哦,自2025年1月1日起,全体公民放假的假日增加2天,其中春节、劳动节各增加1天。
在这里插入图片描述

插入SQL

--类型1为工作日,类型2为周末,类型3为法定节假日
INSERT
	INTO
	T_HOLIDAY
  (ID,DATE_STR)
  SELECT
	ROW_NUMBER() OVER(ORDER BY DAY_YMD)  AS ID,
	DAY_YMD DATE_STR
FROM
	(
	SELECT
		DAY_YMD,
		CASE
			WHEN DAY_YMD IN
                ('20250101', '20250128',
                 '20250129', '20250130', '20250131', '20250203', 
                 '20250204', '20250404', '20250501', '20250502',
                 '20250505', '20250602',
                 '20251001', '20251002', '20251003', '20251006',
                 '20251006','20251007','20251008') THEN
            '3'
			WHEN DAY_YMD IN ('20250126', '20250208', '20250427',
                 '20250928', '20251011') THEN
            '1'
			ELSE
            DAY_TYPE
		END DAY_TYPE
	FROM
		(
		SELECT
			DAY_YMD,
			CASE
				WHEN TRIM(TO_CHAR(TO_DATE(DAY_YMD, 'yyyyMMdd'), 'day')) IN
                        ('星期六', '星期日') THEN
                    '2'
				ELSE
                    '1'
			END DAY_TYPE
		FROM
			(
			SELECT
				TO_CHAR(TO_DATE('20250101', 'yyyyMMdd') + ROWNUM - 1,
                                 'yyyyMMdd') AS DAY_YMD
			FROM
				DUAL
			CONNECT BY
				ROWNUM <=
                             TRUNC(TO_DATE('20251231', 'yyyyMMdd') -
                                   TO_DATE('20250101', 'yyyyMMdd')) + 1)))
	WHERE DAY_TYPE IN (2, 3);

2024放假安排及对应SQL

2024放假安排

2024放假安排

插入SQL

以下为插入所有节假日的日期的sql

--类型1为工作日,类型2为周末,类型3为法定节假日
INSERT
	INTO
	T_HOLIDAY
  (ID,DATE_STR)
  SELECT
	ROW_NUMBER() OVER(ORDER BY DAY_YMD)  AS ID,
	DAY_YMD DATE_STR
FROM
	(
	SELECT
		DAY_YMD,
		CASE
			WHEN DAY_YMD IN
                ('20240101', '20240212',
                 '20240213', '20240214', '20240215', '20240216',
                 '20240404', '20240405', 
                 '20240501', '20240502', '20240503', '20240610',
                 '20240916', '20240917',
                 '20241001', '20241002', '20241003', '20241004',
                 '20241007') THEN
            '3'
			WHEN DAY_YMD IN ('20240204', '20240218', '20240407',
                 '20240428', '20240511', '20240914', '20240929', '20241012') THEN
            '1'
			ELSE
            DAY_TYPE
		END DAY_TYPE
	FROM
		(
		SELECT
			DAY_YMD,
			CASE
				WHEN TRIM(TO_CHAR(TO_DATE(DAY_YMD, 'yyyyMMdd'), 'day')) IN
                        ('星期六', '星期日') THEN
                    '2'
				ELSE
                    '1'
			END DAY_TYPE
		FROM
			(
			SELECT
				TO_CHAR(TO_DATE('20240101', 'yyyyMMdd') + ROWNUM - 1,
                                 'yyyyMMdd') AS DAY_YMD
			FROM
				DUAL
			CONNECT BY
				ROWNUM <=
                             TRUNC(TO_DATE('20241231', 'yyyyMMdd') -
                                   TO_DATE('20240101', 'yyyyMMdd')) + 1)))
	WHERE DAY_TYPE IN (2, 3);
当你遇到 "terminate called after throwing an instance of 'cv::Exception'" 这样的错误提示时,通常是在OpenCV库(C++版本)中抛出了异常,而这个异常没有被适当地捕获和处理。定位到引发此错误的具体函数可以按照以下步骤进行: 1. **查看日志**:首先检查程序运行的日志输出,异常信息会包含堆栈跟踪(StackTrace),这通常会显示异常发生的确切位置。 ```cpp terminate called after throwing an instance of 'cv::Exception' what(): OpenCV(4.5.3) /path/to/opencv/modules/core/src/matrix.cpp:807: error: (-215:Assertion failed) !ssize.empty() in function 'Mat::create' ``` 这条消息会告诉你出错的文件名和行号,即`modules\core\src\matrix.cpp:807`。 2. **定位源码**:根据给出的路径找到对应于错误信息的源文件(如`matrix.cpp`),然后查找807行。 3. **分析上下文**:检查那一行代码,看看是否有明显的异常条件未满足,比如矩阵创建失败、输入数据错误等。 4. **查找异常抛出点**:查找`Mat::create()`函数,它可能是由于对矩阵操作不当或传递了无效参数导致的。查看其调用链,看是否能找到触发异常的直接原因。 5. **检查错误处理**:确保你已经适当使用了try-catch块来捕获并处理可能出现的cv::Exception,如果没有,那可能是在这里发生的。 6. **逐步调试**:如果以上无法确定,你可以考虑设置断点并使用IDE的单步执行功能逐步排查,直到找到异常产生的源头。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值