我有以下SQL代码:
select DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))
这是以这种格式呈现的:
2012-02-29 23:59:59.000
我需要精确的代码片段,其中日期相同,但时间部分必须为 00:00:00.000。
修改 * 我应该在这里更清楚地说明:我需要在任何给定时间取得上个月的最后一天(当然,时间格式为 00:00:00.000)。
我有以下SQL代码:
select DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))
这是以这种格式呈现的:
2012-02-29 23:59:59.000
select dateadd(d,datediff(d,0,dateadd(s,-1,dateadd(m,datediff(m,0,getdate()),0))),0)
SELECT DATEADD(MONTH, -1, DATEADD(DAY, 0, DATEDIFF(DAY, 0, GETDATE())))
2012-02-29 00:00:00.000
。 - Mikael Erikssonselect dateadd(s,-1,dateadd(month,datediff(month,0,GETDATE()),0));
这将会给你上个月的最后一天。
select dateadd(day,-1,dateadd(month,datediff(month,0,GETDATE()),0));
如何执行此操作的更多详细信息:
select dateadd(day,datediff(day,0,@datetime),0);
or
select dateadd(day,datediff(day,0,GETDATE()),0);
select dateadd(month,datediff(month,0,GETDATE()),0);
去掉时间部分的另一种方法是将其转换为浮点数,应用 Floor
函数,然后再转回日期时间。
select Cast(Floor(Cast(DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)) as float)) as datetime)
SELECT DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0))
eomonth
。SELECT EOMONTH(DATEADD(MONTH, -1, GETDATE()))
看到了一些类似的帖子
select cast(cast(dateadd(dd,-1,getdate()) as date) as datetime)
将您的dateadd转换为日期,然后再将其封装在另一个转换回datetime的转换中
所以它从这里开始 2012-02-29 23:59:59.000
变成这样 2012-02-29
最后变成这样 2012-02-29 00:00:00.000
SELECT CAST(s AS DATE)
还是SELECT CAST(CAST(s As Date) As DateTime)
? - Seph