SQL SERVER: Отримайте загальну кількість днів між двома датами


146

Я намагаюся отримати загальну кількість днів між двома днями:

1/1/2011
3/1/2011

RETURN
62

Чи можливо це зробити в SQL Server?


2
Кількість днів між 1/1 та 3/1 ніколи не повертається 62 у нашому поточному календарі. Це повернеться 58 чи 59. Навіть якщо ви включите день початку та кінець дня, це буде 60 чи 61.
TylerH

7
А якщо ви не в США, це повернеться 2 дні.
MGOwen

Відповіді:


287

PRINT DATEDIFF(DAY, '1/1/2011', '3/1/2011') дасть вам те, що ви хочете.

Це дає кількість перетин півночі кордону між двома датами. Ви можете вирішити, що потрібно додати його до цього, якщо ви включаєте обидві дати в рахунок - або віднімаєте одну, якщо ви не хочете включати жодну дату.


Він також переносить datetime і datetime2 як шарм, як я бачу в своїх результатах.
Гонза П.





4
SELECT DATEDIFF(day, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');

0

Це працює для мене -

SELECT DATEDIFF(DAY, startdate, enddate) AS DayCount

Example : SELECT DATEDIFF(DAY, '11/30/2019', GETDATE()) AS DayCount

-1

якщо ви хочете зробити те ж саме, процедуру зберігання, вам потрібно застосувати код нижче.

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


-1
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*/

2
Чи можете ви поясніть свою відповідь? Відповіді, що стосуються лише коду, часто можуть бути важко інтерпретувати.
Йордан Каспер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.