当前位置:  开发笔记 > 数据库 > 正文

如何计算SQL中月份的最后一天?

如何解决《如何计算SQL中月份的最后一天?》经验,为你挑选了1个好方法。

特别是MSSQL 2005.



1> Bill the Liz..:

这是一个解决方案,可以为您提供当月的最后一秒.您可以提取日期部分或修改它以仅返回日期.我在SQL Server 2005上测试了这个.

select dateadd( s, -1, dateadd( mm, datediff( m, 0, getdate() ) + 1, 0 ) );

要了解它是如何工作的,我们必须查看dateadd()和datediff()函数.

DATEADD(datepart, number, date)  
DATEDIFF(datepart, startdate, enddate)

如果您只运行对datediff()的最内部调用,则从时间戳0开始获取当前月份数.

select datediff(m, 0, getdate() );  
1327

下一部分将月数加上0添加到0时间戳,为您提供下一个日历月的起点.

select dateadd( mm, datediff( m, 0, getdate() ) + 1, 0 );
2010-09-01 00:00:00.000

最后,外部dateadd()只是从下个月的开始时间戳中减去一秒,给出当前月份的最后一秒.

select dateadd( s, -1, dateadd( mm, datediff( m, 0, getdate() ) + 1, 0 ) );
2010-08-31 23:59:59.000


这个旧的答案(下面)有一个错误,它在一个月的最后一天没有工作,这个月的天数多于下个月.我把它留在这里作为对别人的警告.

将一个月添加到当前日期,然后使用DAY和DATEADD函数减去应用于当前日期的DAY函数返回的值.

dateadd(day, -day(getdate()), dateadd(month, 1, getdate()))

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有