Дата обновления SQL до первого числа следующего месяца плюс три месяца - PullRequest
0 голосов
/ 23 мая 2018

У меня есть этот запрос:

  update courseRights
         set courseRightsLevelExpires = DATEADD(MM,3,courseRightsLevelExpires)

Это прекрасно работает, но мне действительно нужно продлить до трех месяцев с первого дня следующего месяца.Например, если права истекают сегодня, 23 мая, мне нужно обновить до 1 июня + 3 месяца.

Возможно ли сделать это одним запросом?

Обновить

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

Ответы [ 3 ]

0 голосов
/ 23 мая 2018

Вы можете использовать eomoth() функцию:

update courseRights
set courseRightsLevelExpires = 
    dateadd(mm, 3, dateadd(dd, 1, eomonth(courseRightsLevelExpires)));
0 голосов
/ 18 августа 2018

Я сделаю:

set nextmonthdate = last_day (your-date) + 1 день

0 голосов
/ 23 мая 2018

Чтобы получить первый день следующего месяца:

DATEADD(m, DATEDIFF(m, -1, current_timestamp), 0)

Через три месяца после этого:

DATEADD(m,3,DATEADD(m, DATEDIFF(m, -1, current_timestamp), 0))

Итак, если courseRightsLevelExpires содержит базовую дату, с которой вы работаете:

DATEADD(m,3,DATEADD(m, DATEDIFF(m, -1, courseRightsLevelExpires), 0))
...