SERVER SQL: ottieni giorni totali tra due date


146

Sto cercando di ottenere il numero totale di giorni tra due giorni:

1/1/2011
3/1/2011

RETURN
62

È possibile farlo in SQL Server?


2
Il numero di giorni tra 1/1 e 3/1 non restituirebbe mai 62 nel nostro calendario corrente. Restituirebbe 58 o 59. Anche se includessi il giorno di inizio e il giorno di fine, sarebbero 60 o 61.
TylerH,

7
E se non sei negli Stati Uniti, tornerà 2 giorni.
MGOwen,

Risposte:


287

PRINT DATEDIFF(DAY, '1/1/2011', '3/1/2011') ti darà quello che stai cercando.

Ciò indica il numero di volte in cui il limite di mezzanotte viene attraversato tra le due date. Potresti decidere di doverne aggiungere una se includi entrambe le date nel conteggio o sottrarre una se non vuoi includere nessuna delle due date.


Procede anche datetime e datetime2 come un incanto come posso vedere nei miei risultati.
Honza P.

39

DataDiff di SQL Server

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);

17

Puoi provare questo link MSDN

DATEDIFF ( datepart , startdate , enddate )
SELECT DATEDIFF(DAY, '1/1/2011', '3/1/2011')

16

Vedi DateDiff :

DECLARE @startdate date = '2011/1/1'
DECLARE @enddate date = '2011/3/1'
SELECT DATEDIFF(day, @startdate, @enddate)

12

Un altro formato di data

select datediff(day,'20110101','20110301')

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

0

Questo funziona per me -

SELECT DATEDIFF(DAY, startdate, enddate) AS DayCount

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

-1

se si desidera eseguire la stessa procedura Store Store, è necessario applicare il codice seguente.

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

dove @fromdate e @todate è il parametro dell'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
Puoi per favore spiegare la tua risposta? Le risposte di solo codice possono spesso essere difficili da interpretare.
Jordan Kasper,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.