sql >> Database >  >> RDS >> SQLite

Hoe het verschil tussen twee datums in SQLite te berekenen

Probleem:

U heeft twee kolommen van het datumtype en u wilt het verschil daartussen berekenen.

Voorbeeld:

In de travel tabel, zijn er drie kolommen:id , departure , en arrival . U wilt het verschil berekenen tussen arrival en departure en het aantal dagen van aankomst tot vertrek inclusief .

De travel tabel ziet er als volgt uit:

id vertrek aankomst
1 25-03-2018 05-04-2018
2 2019-09-12 23-09-2019
3 2018-07-14 2018-07-14
4 05-01-2018 2018-01-08

Oplossing:

SELECT
  id,
  departure,
  arrival,
  JULIANDAY(arrival) - JULIANDAY(departure) AS date_difference,
  JULIANDAY(arrival) - JULIANDAY(departure) + 1 AS days_inclusive
FROM travel;

Het resultaat is:

id vertrek aankomst date_difference dagen
1 25-03-2018 05-04-2018 11 12
2 2019-09-12 23-09-2019 11 12
3 2018-07-14 2018-07-14 0 1
4 05-01-2018 2018-01-08 3 4

Discussie:

Gebruik de JULIANDAY() . om het verschil tussen datums te tellen functie, die het aantal dagen telt sinds de middag in Greenwich op 24 november 4714 v. Chr. Je gebruikt de JULIANDAY(date) voor elk van de twee data; trek ze gewoon af met een minteken (-):

JULIANDAY(arrival) - JULIANDAY(departure)

In de meeste gevallen is wat je echt wilt het aantal dagen vanaf de eerste date tot de tweede date inclusief . Dan moet je 1 dag bij het verschil in dagen optellen:

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


  1. Hoe SQL-databases te verbergen waartoe een gebruiker geen toegang heeft?

  2. Ampersand-operator (&) in een SQL Server WHERE-clausule

  3. Subquery gebruiken in een Check-instructie in Oracle

  4. Hoe de maand- en dagnamen in een andere taal in MariaDB te retourneren