我有一个查询,我试图在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
这里有什么问题?即使我移动转换器,我仍然得到这种格式。我的方法是否正确?
答案 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