Database
 sql >> Base de données >  >> RDS >> Database

Comment calculer la différence entre deux dates dans T-SQL

Problème :

Vous avez deux colonnes de type date et vous souhaitez calculer la différence entre elles.

Exemple :

Dans le travel table, il y a trois colonnes :id , departure , et arrival . Vous souhaitez calculer la différence entre arrival et departure , ou le nombre de jours depuis arrival au départ inclusivement.

Le travel le tableau ressemble à ceci :

identifiant départ arrivée
1 2018-03-25 2018-04-05
2 2019-09-12 2019-09-23
3 2018-07-14 2018-07-14
4 2018-01-05 2018-01-08

Solution :

SELECT
  id,
  departure,
  arrival,
  DATEDIFF(day, departure, arrival) AS date_difference,
  DATEDIFF(day, departure, arrival) + 1 AS days_inclusive
FROM travel;

Le résultat est :

identifiant départ arrivée date_difference jours
1 2018-03-25 2018-04-05 11 12
2 2019-09-12 2019-09-23 11 12
3 2018-07-14 2018-07-14 0 1
4 2018-01-05 2018-01-08 3 4

Discussion :

Pour trouver la différence entre les dates, utilisez le DATEDIFF(datepart, startdate, enddate) une fonction. La datepart L'argument définit la partie de la date/datetime dans laquelle vous souhaitez exprimer la différence. Sa valeur peut être year , quarter , month , day , minute , etc. Dans cet exemple, vous voulez exprimer la différence en jours, donc le premier argument est jour. Les deux autres arguments sont la date à partir de laquelle vous commencez à compter et la date à laquelle vous arrêtez de compter – Dans ce cas, departure et arrival , respectivement.

Dans la plupart des cas, ce que vous voulez vraiment, c'est le nombre de jours entre le premier rendez-vous et le deuxième rendez-vous inclusivement . Ensuite, vous devez ajouter 1 jour à la différence de jours :DATEDIFF(day, departure, arrival) + 1 .