从MySQL中具有DATE记录的列获取每月的第N个工作日

我们需要找到工作日,即从日期1到7的第1周,从日期8到14的第2周,以此类推。要获取日期,请使用DAY()MySQL中的函数。设置条件以使用CASE语句获取工作日(数字)。

现在让我们看一个示例并创建一个表-

mysql> create table DemoTable
(
   AdmissionDate date
);

使用插入命令在表中插入一些记录-

mysql> insert into DemoTable values('2019-09-12');
mysql> insert into DemoTable values('2019-09-06');
mysql> insert into DemoTable values('2019-09-26');
mysql> insert into DemoTable values('2019-09-30');

使用select语句显示表中的所有记录-

mysql> select *from DemoTable;

这将产生以下输出-

+---------------+
| AdmissionDate |
+---------------+
| 2019-09-12    |
| 2019-09-06    |
| 2019-09-26    |
| 2019-09-30    |
+---------------+
4 rows in set (0.00 sec)

以下是获取月份的工作日(数字)的查询-

mysql> select
(
   CASE WHEN DAY(AdmissionDate) BETWEEN 1 AND 7 THEN 1
      WHEN DAY(AdmissionDate) BETWEEN 8 AND 14 THEN 2
      WHEN DAY(AdmissionDate) BETWEEN 15 AND 21 THEN 3
      WHEN DAY(AdmissionDate) BETWEEN 22 AND 28 THEN 4
   else 5
      end
) as NthWeekDayOfMonth
from DemoTable;

这将产生以下输出-

+-------------------+
| NthWeekDayOfMonth |
+-------------------+
|                 2 |
|                 1 |
|                 4 |
|                 5 |
+-------------------+
4 rows in set (0.01 sec)