【SQL Server】计算N个月前,N个月后的方法
【摘要】 #1. 计算N个月前的日期#2. 计算N个月后的日期#3. 月末最后一天的情况(计算从日数多的月到日数较少的月)#4. 月末最后一天的情况(计算从日数少的月到日数较多的月) 1 | 计算N个月前的日期如果要计算N个月前的日期。使用DATEADD函数,并且第二个参数N要指定为负数。–指定N为负数DATEADD(month, N, 日付) 例如,计算2015年10月15日的前11个月的日期,SQ...
#1. 计算N个月前的日期
#2. 计算N个月后的日期
#3. 月末最后一天的情况(计算从日数多的月到日数较少的月)
#4. 月末最后一天的情况(计算从日数少的月到日数较多的月)
1 | 计算N个月前的日期
如果要计算N个月前的日期。使用DATEADD函数,并且第二个参数N要指定为负数。
–指定N为负数
DATEADD(month, N, 日付)
例如,计算2015年10月15日的前11个月的日期,SQL 如下:
--以下会全返回 2014-11-15 00:00:00.000
SELECT
DATEADD(month, -11, '20151015'),
DATEADD(month, -11, '2015/10/15'),
DATEADD(month, -11, '2015-10-15')
2 | 计算N个月后的日期
如果计算N个月后的日期,直接使用DATEADD函数,且第二个参数N指定为正数。
DATEADD(month, N, 日付)
例如,计算2015年10月15日的后3个月的日期,SQL如下:
--以下会全返回 2016-01-15 00:00:00.000
SELECT
DATEADD(month, 3, '20151015'),
DATEADD(month, 3, '2015/10/15'),
DATEADD(month, 3, '2015-10-15')
3 | 月末最后一天的情况(计算从日数多的月到日数较少的月)
在以日数多的月末最后一天开始,计算N个月后(N个月前)的日期,且该日期所在月为日数少的月,返回N个月后(N个月前)月末最后一天。
例如,3月31日的一个月后为4月30日。3月31日的一个月前,返回2月最后一天,且要考虑闰年的情况。
实际执行结果如下:
SELECT
--返回 2015-04-30 00:00:00.000
DATEADD(month, 1, '2015/3/31'),
--返回 2015-02-28 00:00:00.000
DATEADD(month, -1, '2015/3/31'),
--返回 2016-02-29 00:00:00.000
DATEADD(month, -1, '2016/3/31')
4 | 月末最后一天的情况(计算从日数少的月到日数较多的月)
在以日数少的月末最后一天开始,计算N个月后(N个月前)的日期,且该日期所在月为日数多的月,返回日期不变。
例如,4月30日的一个月后为5月30日,4月30日的前一个月为3月30日。
实际执行结果:
SELECT
--返回 2015-05-30 00:00:00.000
DATEADD(month, 1, '2015/4/30'),
--返回 2015-03-30 00:00:00.000
DATEADD(month, -1, '2015/4/30')
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)