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?


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.


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

17

Vous pouvez essayer ce lien MSDN

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

16

Voir DateDiff :

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

12

Un autre format de date

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

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

0

Cela fonctionne pour moi -

SELECT DATEDIFF(DAY, startdate, enddate) AS DayCount

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

-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


-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
Pouvez-vous expliquer votre réponse? Les réponses basées uniquement sur le code peuvent souvent être difficiles à interpréter.
Jordan Kasper
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.