SERWER SQL: Pobierz całkowitą liczbę dni między dwiema datami

146

Próbuję uzyskać całkowitą liczbę dni między dwoma dniami:

1/1/2011
3/1/2011

RETURN
62

Czy można to zrobić w SQL Server?

Pod Mays
źródło
2
Liczba dni między 1/1 a 3/1 nigdy nie zwróci 62 w naszym bieżącym kalendarzu.
Zwróci
7
A jeśli nie jesteś w USA, zwrot za 2 dni.
MGOwen

Odpowiedzi:

287

PRINT DATEDIFF(DAY, '1/1/2011', '3/1/2011') da ci to, czego szukasz.

Daje to, ile razy granica północy jest przekraczana między dwiema datami. Możesz zdecydować się dodać jedną do tego, jeśli uwzględniasz obie daty w liczeniu - lub odjąć jedną, jeśli nie chcesz uwzględniać żadnej z dat.

Will A
źródło
Jak widzę w moich wynikach, przebiega również z datetime i datetime2 jak urok.
Honza P.
39

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);
Khepri
źródło
17

Możesz spróbować tego łącza MSDN

DATEDIFF ( datepart , startdate , enddate )
SELECT DATEDIFF(DAY, '1/1/2011', '3/1/2011')
zacina się
źródło
16

Zobacz DateDiff :

DECLARE @startdate date = '2011/1/1'
DECLARE @enddate date = '2011/3/1'
SELECT DATEDIFF(day, @startdate, @enddate)
Mitch Wheat
źródło
12

Inny format daty

select datediff(day,'20110101','20110301')
cakiran
źródło
4
SELECT DATEDIFF(day, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
VMAtm
źródło
0

To działa dla mnie -

SELECT DATEDIFF(DAY, startdate, enddate) AS DayCount

Example : SELECT DATEDIFF(DAY, '11/30/2019', GETDATE()) AS DayCount
bulbul bd
źródło
-1

jeśli chcesz zrobić to samo Procedura sklepu, musisz zastosować poniższy kod.

select  (datediff(dd,'+CHAR(39)+ convert(varchar(10),@FromDate  ,101)+ 
 CHAR(39)+','+CHAR(39)+ convert(varchar(10),@ToDate  ,101) + CHAR(39) +')) 
 Daysdiff

gdzie @fromdate i @todate to parametr SP

Bha15
źródło
-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*/
JIYAUL MUSTAPHA
źródło
2
Czy możesz wyjaśnić swoją odpowiedź? Odpowiedzi zawierające tylko kod mogą być często trudne do zinterpretowania.
Jordan Kasper