每月的最后一天和第一天

最后一天

         LAST_DAY(SYSDATE)

第一天

trunc(sysdate,'yyyy') --返回当年第一天.
trunc(sysdate,'mm') --返回当月第一天.
trunc(sysdate,'d') --返回当前星期的第一天.


在 SQL Server 中获取每月最后一天的日期,可以使用内置函数 `EOMONTH` 或者通过日期计算实现。以下是几种常用的方法: ### 使用 `EOMONTH` 函数 `EOMONTH` 是一个专门用于返回指定日期所在月份最后一天的函数,语法如下: ```sql EOMONTH ( start_date [ , month_to_add ] ) ``` - `start_date`:表示起始日期。 - `month_to_add`(可选):表示从 `start_date` 开始增加的月份数。 例如,获取当前日期所在月份的最后一天: ```sql SELECT EOMONTH(GETDATE()) AS LastDayOfMonth; ``` 如果需要获取下个月的最后一天,可以传入 `1` 作为第二个参数: ```sql SELECT EOMONTH(GETDATE(), 1) AS LastDayOfNextMonth; ``` 该方法简洁高效,推荐优先使用此方式[^2]。 --- ### 使用 `DATEADD` `DATEDIFF` 组合 如果没有使用 `EOMONTH` 的条件(如兼容旧版本),可以通过组合 `DATEADD` `DATEDIFF` 实现相同功能。 #### 方法一:获取本月最后一天 ```sql SELECT DATEADD(MILLISECOND, -3, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) + 1, 0)) AS LastDayOfMonth; ``` 解释: - `DATEDIFF(MONTH, 0, GETDATE())` 计算从 `1900-01-01` 到当前日期之间的月份数。 - `DATEADD(MONTH, ..., 0)` 将其转换为下个月的第一天。 - 最后减去 3 毫秒,得到上个月的最后一天(即本月的最后时刻 `23:59:59.997`)[^3]。 #### 方法二:另一种写法 ```sql SELECT DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE()) + 1, -1)) AS LastDayOfMonth; ``` 该方法同样基于 `DATEDIFF` `DATEADD` 的组合,但逻辑略有不同,也能准确获取到本月的最后一天日期[^4]。 --- ### 总结 - 如果使用的是 SQL Server 2012 及以上版本,推荐直接使用 `EOMONTH` 函数,语法清晰且执行效率高。 - 对于早期版本或需要兼容性处理的情况,可通过 `DATEADD` `DATEDIFF` 的组合方式实现。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值