如何在MySQL中检查日期是否是该月的第2个或第4个星期日?

Smi*_*ave 9 mysql mysql-workbench

我可以检查提供的日期是否是该月的第二个或第四个星期日?

例如: 假设我进入2016年3月3日,然后是3月份的第2个星期日.那么我怎样才能使用MySQL来了解它呢?

Dyl*_* Su 6

这是一个解决方案:

SET @var = date '2016-03-13';
select 
    sum( month(@var - INTERVAL 7 * t.a DAY) = month(@var) ) as WeekOfMonth, 
    dayname(@var) as Weekday
from (select 0 as a union select 1 union select 2 union select 3 union select 4) as t;
Run Code Online (Sandbox Code Playgroud)

输出:

mysql> SET @var = date '2016-03-13';
Query OK, 0 rows affected (0.00 sec)

mysql> select
    -> sum( month(@var - INTERVAL 7 * t.a DAY) = month(@var) ) as WeekOfMonth,
    -> dayname(@var) as Weekday
    -> from (select 0 as a union select 1 union select 2 union select 3 union select 4) as t;
+-------------+---------+
| WeekOfMonth | Weekday |
+-------------+---------+
|           2 | Sunday  |
+-------------+---------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

要在您的环境中使用,只需将"@var"替换为您的日期输入.


Ric*_*mes 5

鉴于这x是一个DATEDATETIME:

DAYNAME(x) = 'Sunday' AND
FLOOR((DAYOFMONTH(x) + 6 ) / 7) IN (2, 4)
Run Code Online (Sandbox Code Playgroud)

2,4 - 第2和第4个星期天.

FLOOR... - 给出哪个星期的一周.

因此,此代码可以轻松适应一周中的不同日期和一个月的不同周.