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 .