sql >> Databasteknik >  >> RDS >> SQLite

Hur man beräknar skillnaden mellan två datum i SQLite

Problem:

Du har två kolumner av datumtypen och du vill beräkna skillnaden mellan dem.

Exempel:

I travel tabell, det finns tre kolumner:id , departure och arrival . Du vill beräkna skillnaden mellan arrival och departure och antalet dagar från ankomst till avgång inklusive .

travel tabellen ser ut så här:

id avgång 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 är:

id avgång ankomst date_difference dagar
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:

För att räkna skillnaden mellan datum, använd JULIANDAY() funktion, som räknar antalet dagar sedan middagstid i Greenwich den 24 november 4714 f.Kr. Du använder JULIANDAY(date) för vart och ett av de två datumen; subtrahera dem helt enkelt med ett minustecken (-):

JULIANDAY(arrival) - JULIANDAY(departure)

I de flesta fall är det du verkligen vill ha antalet dagar från det första datumet till det andra datumet inklusive . Sedan måste du lägga till 1 dag till skillnaden i dagar:

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


  1. Hur man schemalägger en lagrad procedur i MySQL

  2. Implementera personsökning med OFFSET FETCH NEXT i SQL Server

  3. SQL välj max(datum) och motsvarande värde

  4. Huvudkonceptet för SQL Server-låsning