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

时间:2018-05-23 17:07:36

标签: sql sql-server tsql sql-server-2014

我有这个问题:

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

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

是否可以在一个查询中执行此操作?

更新

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

3 个答案:

答案 0 :(得分:2)

要获得下个月的第一天:

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

答案 1 :(得分:0)

您可以使用eomoth()功能:

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

答案 2 :(得分:0)

我会做的:

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