SQL SERVER:获取两个日期之间的总天数
Posted
技术标签:
【中文标题】SQL SERVER:获取两个日期之间的总天数【英文标题】:SQL SERVER: Get total days between two dates 【发布时间】:2011-08-29 09:48:15 【问题描述】:我正在尝试获取两天之间的总天数:
1/1/2011
3/1/2011
RETURN
62
可以在 SQL Server 中做吗?
【问题讨论】:
在我们当前的日历中,介于 1/1 和 3/1 之间的天数永远不会返回 62。它将返回 58 或 59。即使您包括开始日期和结束日期,也将是 60 或 61。 如果您不在美国,它将返回 2 天。 【参考方案1】:SQL Server DateDiff
DECLARE @startdate datetime2 = '2007-05-05 12:10:09.3312722';
DECLARE @enddate datetime2 = '2009-05-04 12:10:09.3312722';
SELECT DATEDIFF(day, @startdate, @enddate);
【讨论】:
【参考方案2】:你可以试试这个MSDN link
DATEDIFF ( datepart , startdate , enddate )
SELECT DATEDIFF(DAY, '1/1/2011', '3/1/2011')
【讨论】:
【参考方案3】:PRINT DATEDIFF(DAY, '1/1/2011', '3/1/2011')
会给你你想要的。
这给出了两个日期之间跨越午夜边界的次数。如果您将两个日期都包含在计数中,您可能会决定需要为此添加一个 - 如果您不想包含任何一个日期,则可能需要减去一个。
【讨论】:
它还像我在结果中看到的魅力一样继续 datetime 和 datetime2。【参考方案4】:见DateDiff:
DECLARE @startdate date = '2011/1/1'
DECLARE @enddate date = '2011/3/1'
SELECT DATEDIFF(day, @startdate, @enddate)
【讨论】:
【参考方案5】:SELECT DATEDIFF(day, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
【讨论】:
【参考方案6】:另一种日期格式
select datediff(day,'20110101','20110301')
【讨论】:
【参考方案7】:如果你想做同样的事情存储过程,那么你需要应用下面的代码。
select (datediff(dd,'+CHAR(39)+ convert(varchar(10),@FromDate ,101)+
CHAR(39)+','+CHAR(39)+ convert(varchar(10),@ToDate ,101) + CHAR(39) +'))
Daysdiff
其中@fromdate 和@todate 是SP 的参数
【讨论】:
【参考方案8】:DECLARE @FDate DATETIME='05-05-2019' /*This is first date*/
GETDATE()/*This is Current date*/
SELECT (DATEDIFF(DAY,(@LastDate),GETDATE())) As DifferenceDays/*this query will return no of days between firstdate & Current date*/
【讨论】:
你能解释一下你的答案吗?仅代码的答案通常难以解释。【参考方案9】:这对我有用 -
SELECT DATEDIFF(DAY, startdate, enddate) AS DayCount
Example : SELECT DATEDIFF(DAY, '11/30/2019', GETDATE()) AS DayCount
【讨论】:
以上是关于SQL SERVER:获取两个日期之间的总天数的主要内容,如果未能解决你的问题,请参考以下文章