【发布时间】:2011-09-15 11:16:07
【问题描述】:
SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))
LastDay_CurrentMonth
大家好,我有一个查询要查找当前月份的最后一天,这肯定运行良好,但我无法理解,因为我有其他类似的要求,必须相应地更改。
谁能给我解释一下.. 提前致谢
【问题讨论】:
-
这个查询的哪一部分你不明白?
-
参见Tibor Karaszi's ultimate guide to the datetime datatypes: Getting rid of the time portion:“dateadd/datediff 版本可以轻松更改以获取当前月、季度或年的开始...”
-
您展示的样本在两个方面存在缺陷。 (1)当月最后一天的last second有什么用?如果 SMALLDATETIME 它无论如何都会四舍五入;如果是 DATETIME 或 DATETIME2,您将丢失最后一秒发生的一些数据。总是更好地使用 >= 这个月和 sqlblog.com/blogs/aaron_bertrand/archive/2009/10/16/… (2) 只是迂腐,但 SPELL OUT
SECOND和MONTH而不是使用s、mm和m... 使代码 更多自我记录。 -
谢谢@Arvo,你可以看看下面的评论。
-
Thanx @Onedaywhen 那是个好东西.......
标签: sql sql-server-2008