我有这个问题:
update courseRights
set courseRightsLevelExpires = DATEADD(MM,3,courseRightsLevelExpires)
这很好但我实际需要的是从下个月的第一天延长到三个月。例如,如果权利今天到期,即5月23日,我需要更新到6月1日+ 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天