当前位置:数据库 > SQLServer >>

计算给定日期所在月的上月最后一天 sql语句

计算给定日期所在月的上月最后一天 sql语句

declare @date  datetime
set @date=getdate()
--当前月第一天减去一天
select dateadd(day,-1,dateadd(month,datediff(month,0,@date),0)) as '上月最后一天'
--另一种当前月第一天算法
select dateadd(day,-1,dateadd(day,1-datepart(day,@date),@date)) '上月最后一天'
select dateadd(day,1-datepart(day,@date),@date)-1 '上月最后一天'
--另一种算法,不能用当前月的最后一天加一个月,因为当前月可能是30天。
--例如 select dateadd(month,1,'2010-06-30') --结果是2010-07-30而不是2010-07-31,
--这也是月末算法采用下月第一天减1天计算的原因
--但是如果计算月是31天择无此问题
--例如 select dateadd(month,1,'2010-05-31') --结果是2010-06-30
--因此下面算法是正确的,-1 表示'1899-12-31 00:00:00.000'-- select convert(datetime,-1)
select dateadd(month,datediff(month,-1,@date)-1,-1)
--另一种当前月算法
select dateadd(day,-1,dateadd(day,1-datepart(day,@date),@date)) '上月最后一天'
--简化
select dateadd(day,0-datepart(day,@date),@date) '上月最后一天'
go

补充:数据库,Mssql 
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,