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

Sådan beregnes forskellen mellem to datoer i SQLite

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 og antallet af dage fra ankomst 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,
  JULIANDAY(arrival) - JULIANDAY(departure) AS date_difference,
  JULIANDAY(arrival) - JULIANDAY(departure) + 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 tælle forskellen mellem datoer, brug JULIANDAY() funktion, som tæller antallet af dage siden middagstid i Greenwich den 24. november 4714 f.v.t. Du bruger JULIANDAY(date) for hver af de to datoer; blot trække dem fra med et minustegn (-):

JULIANDAY(arrival) - JULIANDAY(departure)

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:

JULIANDAY(arrival) - JULIANDAY(departure) + 1.


  1. Sådan fungerer SCHEMA_ID() i SQL Server

  2. MySQL fjerner nogle fremmednøgler

  3. MariaDB JSON_TYPE() Forklaret

  4. hvordan får man vist fuld lagret procedurekode?