SQL 将日期更新为下个月的第一天加上三个月

SQL update date to first of next month plus three months

我有这个查询:

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

这很好用,但我真正需要的是从下个月的第一天延长到三个月。例如,如果权利今天(5 月 23 日)到期,我需要更新到 6 月 1 日 + 3 个月。

是否可以在一次查询中完成?

更新

因为它被标记为与另一个问题重复,所以我正在更新内容以说明我不仅要查找下个月的第一个日期,而且我需要在该日期后添加三个月。

获取下个月的第一天:

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

您可以使用 eomoth() 功能:

update courseRights
set courseRightsLevelExpires = 
    dateadd(mm, 3, dateadd(dd, 1, eomonth(courseRightsLevelExpires)));

我会做:

设置下个月日期 = last_day(您的日期)+ 1 天