sql >> Database teknologi >  >> RDS >> Database

Sådan beregnes forskellen mellem to datoer i T-SQL

Problem:

Du har to kolonner af datotypen, og du vil beregne forskellen mellem dem.

Eksempel:

I travel tabel, er der tre kolonner:id , departure , og arrival . Du vil gerne beregne forskellen mellem arrival og departure , eller antallet af dage fra arrival til afgang inklusive.

travel tabellen ser sådan ud:

id afgang ankomst
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

Løsning:

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

Resultatet er:

id afgang ankomst dato_difference dage
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

Diskussion:

For at finde forskellen mellem datoer skal du bruge DATEDIFF(datepart, startdate, enddate) fungere. datepart argument definerer den del af datoen/datoen, hvor du vil udtrykke forskellen. Dens værdi kan være year , quarter , month , day , minute osv. I dette eksempel vil du udtrykke forskellen i dage, så det første argument er dag. De to andre argumenter er datoen, hvorfra du begynder at tælle, og datoen, hvor du stopper med at tælle – I dette tilfælde departure og arrival hhv.

I de fleste tilfælde er det, du virkelig ønsker, antallet af dage fra den første dato til den anden dato inklusive . Så skal du tilføje 1 dag til forskellen i dage:DATEDIFF(day, departure, arrival) + 1 .


  1. Binding af forespørgselsparametre efter navn med ODP.NET

  2. Slet forespørgsel virker ikke i mysql

  3. En guide til at forstå databaseskaleringsmønstre

  4. Hvordan indlæser din Oracle ODBC-driver Oracle-klienten?