[ SQL Server ] 计算N个月前,N个月后的方法

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: #1. 计算N个月前的日期#2. 计算N个月后的日期#3. 月末最后一天的情况(计算从日数多的月到日数较少的月)#4. 月末最后一天的情况(计算从日数少的月到日数较多的月)

#1. 计算N个月前的日期

#2. 计算N个月后的日期

#3. 月末最后一天的情况(计算从日数多的月到日数较少的月)

#4. 月末最后一天的情况(计算从日数少的月到日数较多的月)

1|计算N个月前的日期

如果要计算N个月前的日期。使用DATEADD函数,并且第二个参数N要指定为负数。

--指定N为负数
DATEADD(month, N, 日付)

image.gif

例如,计算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')

image.gif

2|计算N个月后的日期

如果计算N个月后的日期,直接使用DATEADD函数,且第二个参数N指定为正数。

DATEADD(month, N, 日付)

image.gif

例如,计算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')

image.gif

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

image.gif

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

image.gif


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
7天前
|
SQL 机器学习/深度学习 自然语言处理
Text-to-SQL技术演进 - 阿里云OpenSearch-SQL在BIRD榜单夺冠方法剖析
本文主要介绍了阿里云OpenSearch在Text-to-SQL任务中的最新进展和技术细节。
|
2月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
63 13
|
2月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
26天前
|
SQL JavaScript 前端开发
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题
|
2月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
44 6
|
2月前
|
JSON 数据格式 SQL
SQL开发问题之直接使用join方法在处理字符串类型属性时可能会遇到性能问题如何解决
SQL开发问题之直接使用join方法在处理字符串类型属性时可能会遇到性能问题如何解决
|
1月前
|
SQL 移动开发 Oracle
SQL查询连续六天数据记录的技巧与方法
在数据库查询中,实现针对连续几天(如连续六天)的数据筛选是一个常见且稍具挑战性的任务
|
1月前
|
SQL Oracle 关系型数据库
SQL添加字段记录详解:技巧与方法实践
在数据库管理中,经常需要向表中添加新的字段(列)或向现有字段中插入新的记录(行)
|
1月前
|
SQL 数据挖掘 数据库
SQL计算班级语文平均分:详细步骤与技巧
在数据库管理中,经常需要统计和查询各种汇总信息,如班级某科目的平均分
|
1月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
174 0