SQLite
 sql >> Datenbank >  >> RDS >> SQLite

So berechnen Sie die Differenz zwischen zwei Daten in SQLite

Problem:

Sie haben zwei Spalten des Datumstyps und möchten die Differenz zwischen ihnen berechnen.

Beispiel:

Im travel Tabelle gibt es drei Spalten:id , departure , und arrival . Sie möchten die Differenz zwischen arrival berechnen und departure und die Anzahl der Tage von der Ankunft bis zur Abreise einschließlich .

Die travel Tabelle sieht so aus:

id Abfahrt Ankunft
1 25.03.2018 2018-04-05
2 2019-09-12 2019-09-23
3 2018-07-14 2018-07-14
4 05.01.2018 08.01.2018

Lösung:

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

Das Ergebnis ist:

id Abfahrt Ankunft date_difference Tage
1 25.03.2018 2018-04-05 11 12
2 2019-09-12 2019-09-23 11 12
3 2018-07-14 2018-07-14 0 1
4 05.01.2018 08.01.2018 3 4

Diskussion:

Um die Differenz zwischen Datumsangaben zu zählen, verwenden Sie JULIANDAY() Funktion, die die Anzahl der Tage seit dem Mittag in Greenwich am 24. November 4714 v. Sie verwenden den JULIANDAY(date) für jeden der beiden Termine; subtrahieren Sie sie einfach mit einem Minuszeichen (-):

JULIANDAY(arrival) - JULIANDAY(departure)

In den meisten Fällen möchten Sie wirklich die Anzahl der Tage vom ersten Date bis zum zweiten Date einschließlich . Dann müssen Sie 1 Tag zu der Differenz in Tagen hinzufügen:

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