获取MSSQL上时间设置为00:00:00的月份的最后一天

时间:2015-05-26 07:19:51

标签: sql sql-server datetime

我有一个查询,我试图在00:00:00和上个月的00:00:00获取昨天的日期。 这是我的问题:

SELECT DATEADD( DD,-2, CONVERT( CHAR(8) , getdate() , 112 )) 'Yesterday',
CONVERT( CHAR(8) ,DATEADD(ms,-3, DATEADD(mm,0,DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0))) , 112 ) 'Last Day of Last Month'

结果如下:

昨天:2015-05-24 00:00:00.000

上个月的最后一天:20150430

这里有什么问题?即使我移动转换器,我仍然得到这种格式。我的方法是否正确?

2 个答案:

答案 0 :(得分:4)

试试这个:

select 
    dateadd(dd, datediff(dd, 0, getdate()) - 1, 0) as yesterday,
    dateadd(dd, -1, dateadd(mm, datediff(mm, 0, getdate()), 0)) as lastDayOfLastMonth

有关更常见的约会例程,请访问Lynn Pettis的article

答案 1 :(得分:2)

如果您使用的是SQL Server 2012或更高版本,则可以使用EOMONTH()内置函数。

SELECT CAST(EOMONTH (CURRENT_TIMESTAMP, -1) AS DATETIME)会返回2015-04-30 00:00:00.000