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:获取两个日期之间的总天数的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 查询日期范围之间一个月的总天数

获取Oracle中两个日期之间的天数,包括日期

如何计算两个日期之间的月数和天数,而不在 SQL Server 中返回负值

SQL语句计算两个日期之间有多少个工作日的方法

如何在 oracle sql 中提取两个日期之间的天数?

SQL是计算两个日期相差多少天数的函数?