SQL SERVER: obtenez le nombre total de jours entre deux dates

146

J'essaie d'obtenir le nombre total de jours entre deux jours:

1/1/2011
3/1/2011

RETURN
62

Est-il possible de le faire dans SQL Server?

Pod Mays
la source
2
Le nombre de jours entre 1/1 et 3/1 ne reviendrait jamais à 62 dans notre calendrier actuel. Il renverrait 58 ou 59. Même si vous incluez le jour de début et le jour de fin, ce serait 60 ou 61.
TylerH
7
Et si vous n'êtes pas aux USA, il reviendra 2 jours.
MGOwen

Réponses:

287

PRINT DATEDIFF(DAY, '1/1/2011', '3/1/2011') vous donnera ce que vous recherchez.

Cela donne le nombre de fois où la limite de minuit est franchie entre les deux dates. Vous pouvez décider d'en ajouter une si vous incluez les deux dates dans le décompte - ou en soustraire une si vous ne souhaitez pas inclure l'une ou l'autre des dates.

Will A
la source
Il procède également datetime et datetime2 comme un charme comme je peux le voir dans mes résultats.
Honza P.
39

DateDiff 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);
Khepri
la source
17

Vous pouvez essayer ce lien MSDN

DATEDIFF ( datepart , startdate , enddate )
SELECT DATEDIFF(DAY, '1/1/2011', '3/1/2011')
confitures
la source
16

Voir DateDiff :

DECLARE @startdate date = '2011/1/1'
DECLARE @enddate date = '2011/3/1'
SELECT DATEDIFF(day, @startdate, @enddate)
Blé Mitch
la source
12

Un autre format de date

select datediff(day,'20110101','20110301')
cakiran
la source
4
SELECT DATEDIFF(day, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
VMAtm
la source
0

Cela fonctionne pour moi -

SELECT DATEDIFF(DAY, startdate, enddate) AS DayCount

Example : SELECT DATEDIFF(DAY, '11/30/2019', GETDATE()) AS DayCount
bulbul bd
la source
-1

si vous voulez faire la même chose procédure de magasin, vous devez appliquer le code ci-dessous.

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

où @fromdate et @todate est le paramètre du SP

Bha15
la source
-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
la source
2
Pouvez-vous expliquer votre réponse? Les réponses basées uniquement sur le code peuvent souvent être difficiles à interpréter.
Jordan Kasper