mysql怎么去除节假日
时间 : 2023-03-09 02:35:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性
如果要在 MySQL 中去除节假日,可以采用以下两种方法:
1. 利用日历表实现
可以创建一个包含所有日期的日历表,然后在该表中标识出所有的节假日,最后在查询时使用 WHERE 子句过滤掉这些日期即可。
下面是一个示例 SQL 语句,可以创建一个包含 2020 年所有日期的日历表:
```sql
CREATE TABLE calendar (
date DATE PRIMARY KEY,
year SMALLINT,
quarter TINYINT,
month TINYINT,
day TINYINT,
week TINYINT,
day_name VARCHAR(9),
is_holiday BOOLEAN
);
INSERT INTO calendar (date, year, quarter, month, day, week, day_name, is_holiday)
SELECT
DATE(NOW() - INTERVAL cnt DAY),
YEAR(NOW() - INTERVAL cnt DAY),
QUARTER(NOW() - INTERVAL cnt DAY),
MONTH(NOW() - INTERVAL cnt DAY),
DAY(NOW() - INTERVAL cnt DAY),
WEEK(NOW() - INTERVAL cnt DAY),
DATE_FORMAT(NOW() - INTERVAL cnt DAY, '%W'),
CASE DATE_FORMAT(NOW() - INTERVAL cnt DAY, '%Y%m%d')
WHEN "20200101" THEN 1 -- 元旦
WHEN "20200124" THEN 1 -- 春节
WHEN "20200127" THEN 1 -- 春节
WHEN "20200128" THEN 1 -- 春节
WHEN "20200129" THEN 1 -- 春节
WHEN "20200130" THEN 1 -- 春节
WHEN "20200404" THEN 1 -- 清明节
WHEN "20200405" THEN 1 -- 清明节
WHEN "20200406" THEN 1 -- 清明节
WHEN "20200501" THEN 1 -- 劳动节
WHEN "20200502" THEN 1 -- 劳动节
WHEN "20200503" THEN 1 -- 劳动节
WHEN "20200504" THEN 1 -- 劳动节
WHEN "20200625" THEN 1 -- 端午节
WHEN "20200626" THEN 1 -- 端午节
WHEN "20200627" THEN 1 -- 端午节
WHEN "20201001" THEN 1 -- 国庆节
WHEN "20201002" THEN 1 -- 国庆节
WHEN "20201003" THEN 1 -- 国庆节
WHEN "20201004" THEN 1 -- 国庆节
WHEN "20201005" THEN 1 -- 国庆节
WHEN "20201006" THEN 1 -- 国庆节
WHEN "20201007" THEN 1 -- 国庆节
ELSE 0
END
FROM (
SELECT a + b * 10 + c * 100 AS cnt
FROM (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
JOIN (SELECT 0 AS b UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
JOIN (SELECT 0 AS c UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) c
) days
WHERE cnt <= DATEDIFF(NOW(), '2020-01-01');
在这个示例中,我们将所有的节假日标为 1,非节假日标为 0。
然后,查询时可以使用以下语句过滤掉所有的节假日:
```sql
SELECT * FROM calendar WHERE is_holiday = 0;
2. 利用 UDF 实现
MySQL 中可以使用用户自定义函数(UDF)实现对节假日的过滤。实现 UDF 可以参考以下步骤:
1. 下载 UDF 库,例如 `libudf_date_functions.so`;
2. 将库文件放入 MySQL 插件目录,并在 MySQL 配置文件中添加以下行:
```text
plugin_dir=/usr/lib/mysql
上一篇
mysql怎么写默认值
下一篇
mysql组合键怎么设置
https/SSL证书广告优选IDC>>
推荐主题模板更多>>
推荐文章