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 天
我有这个查询:
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 天