用mysql写一个区分工作日,周末以及法定节假日的语句
时间: 2023-08-04 16:10:45 浏览: 168
假设我们已经有了一个名为`holidays`的表,其中包含了所有的法定节假日日期。我们可以使用以下语句来区分工作日、周末和法定节假日:
```
SELECT
DATE_FORMAT(date_column, '%Y-%m-%d') AS date,
CASE
WHEN WEEKDAY(date_column) IN (5, 6) THEN 'weekend'
WHEN EXISTS (SELECT * FROM holidays WHERE holiday_date = date_column) THEN 'holiday'
ELSE 'weekday'
END AS day_type
FROM
your_table
```
其中,`date_column` 是日期列的名称,`your_table` 是你需要查询的表名称。`WEEKDAY()` 函数返回日期对应的星期几,星期日为 0,星期六为 6。如果返回的星期数在 5 和 6 之间,则说明这是一个周末。`EXISTS` 子句用于判断日期是否在法定节假日表中存在。
以上语句会返回一个包含日期和对应类型的结果集,例如:
```
+------------+----------+
| date | day_type |
+------------+----------+
| 2021-01-01 | holiday |
| 2021-01-02 | weekend |
| 2021-01-03 | weekend |
| 2021-01-04 | weekday |
| 2021-01-05 | weekday |
| 2021-01-06 | weekday |
| 2021-01-07 | weekday |
| 2021-01-08 | weekday |
| 2021-01-09 | weekend |
| 2021-01-10 | weekend |
+------------+----------+
```