[英]SQL datetime needs to read 00:00:00.000
我有以下一段 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 格式)
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())))
这将为您提供上个月的最后一秒
select 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);
或者
select dateadd(day,datediff(day,0,GETDATE()),0);
英语:取这个日期和 0 之间的天数,并将这些天数加到 0。
这适用于 datediff 的任何参数。 所以
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 cast(cast(dateadd(dd,-1,getdate()) as date) as datetime)
将您的 dateadd 转换为日期,然后将其包含在另一个转换回日期时间中
所以它从这个 2012-02-29 23:59:59.000
至此 2012-02-29
最后这个 2012-02-29 00:00:00.000
SELECT DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0))
在 SQL Server 2012 中,您可以使用eomonth
。
SELECT EOMONTH(DATEADD(MONTH, -1, GETDATE()))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.