Получить следующее воскресенье на указанную дату - PullRequest
0 голосов
/ 27 марта 2020

У меня есть таблица в MYSQL с датой, представленной в виде строки в моем столбце.

Example: 20190828 represents 28th Aug 2019

Теперь я хочу получить следующее воскресенье для этой данной даты, если данная дата уже Воскресенье, то никаких изменений не требуется. Также как узнать конец месяца для данной даты.

Example:

For input - 20190828, next sunday is 20190901, end of the month is 20190831

1 Ответ

2 голосов
/ 27 марта 2020

Вы можете преобразовать строку в дату, а затем выполнить арифметику:

select
    mydate,
    str_to_date(mydate, '%Y%m%d') + interval 6 - weekday(str_to_date(mydate, '%Y%m%d')) day next_sunday
    last_day(str_to_date(mydate, '%Y%m%d')) last_day_of_the_month
from mytable

На самом деле приведение может даже не быть необходимым, поскольку MySQL здесь должно неявно преобразовывать строки в дату:

select
    mydate,
    mydate + interval 6 - weekday(mydate) day next_sunday,
    last_day(mydate) last_day_of_the_month
from mytable

Демонстрация на DB Fiddle :

with mytable as (select '20190828' mydate union all select '20200327')
select
    mydate,
    mydate + interval 6 - weekday(mydate) day next_sunday,
    last_day(mydate) last_day_of_the_month
from mytable
mydate   | next_sunday | last_day_of_the_month
:------- | :---------- | :--------------------
20190828 | 2019-09-01  | 2019-08-31           
20200327 | 2020-03-29  | 2020-03-31           
...