从 MySQL 中带有 DATE 记录的列中获取月份的第 N 个星期几

mysqlmysqli database

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

现在让我们看一个例子并创建一个表 −

mysql> create table DemoTable
(
   AdmissionDate date
);
Query OK, 0 rows affected (0.63 sec)

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

mysql> insert into DemoTable values('2019-09-12');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values('2019-09-06');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('2019-09-26');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values('2019-09-30');
Query OK, 1 row affected (0.14 sec)

使用 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)

相关文章