【问题标题】:SQL SERVER: Get total days between two datesSQL SERVER:获取两个日期之间的总天数
【发布时间】: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 天。

标签: sql sql-server sql-server-2008 date


【解决方案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
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2011-01-29
                • 1970-01-01
                • 2021-05-19
                • 2016-03-15
                • 1970-01-01
                • 1970-01-01
                • 2012-10-17
                • 2014-06-11
                相关资源
                最近更新 更多