Событие MySQL еженедельно, но только первую неделю каждого месяца? - PullRequest
0 голосов
/ 03 июня 2018

Мне нужно проводить событие еженедельно (каждую первую пятницу месяца) и другое событие каждую пятницу, кроме первой пятницы месяца.Все, что я мог придумать, было что-то вроде

IF WEEKDAY()=4 AND DAYOFMONTH() BETWEEN 1 AND 7 THEN ....

и

IF WEEKDAY()=4 AND DAYOFMONTH() BETWEEN 8 AND 31 THEN ....

Но есть ли лучший / более аккуратный запрос, который?

1 Ответ

0 голосов
/ 03 июня 2018
SET @x := '2018-06-01';

SELECT CASE WHEN WEEKDAY(@x) = 4 
            THEN CASE WHEN DAYOFMONTH(@x) < 8 
                      THEN 'FIRST FRIDAY' 
                      ELSE 'SOME OTHER FRIDAY' END 
            ELSE 'NOT FRIDAY' END x;
+--------------+
| x            |
+--------------+
| FIRST FRIDAY |
+--------------+




SET @x := '2018-06-08';

SELECT CASE WHEN WEEKDAY(@x) = 4 
            THEN CASE WHEN DAYOFMONTH(@x) < 8 
                      THEN 'FIRST FRIDAY' 
                      ELSE 'SOME OTHER FRIDAY' END 
            ELSE 'NOT FRIDAY' END x;
+-------------------+
| x                 |
+-------------------+
| SOME OTHER FRIDAY |
+-------------------+

SET @x := '2018-06-07';

SELECT CASE WHEN WEEKDAY(@x) = 4 
            THEN CASE WHEN DAYOFMONTH(@x) < 8 
                 THEN 'FIRST FRIDAY' 
                 ELSE 'SOME OTHER FRIDAY' END 
            ELSE 'NOT FRIDAY' END x;
+------------+
| x          |
+------------+
| NOT FRIDAY |
+------------+
...