SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Como calcular a diferença entre duas datas no SQLite

Problema:


Você tem duas colunas do tipo data e deseja calcular a diferença entre elas.

Exemplo:


Na travel tabela, há três colunas:id , departure , e arrival . Você gostaria de calcular a diferença entre arrival e departure e o número de dias entre a chegada e a partida inclusive .

A travel tabela fica assim:
id partida chegada
1 25-03-2018 2018-04-05
2 2019-09-12 23-09-2019
3 2018-07-14 2018-07-14
4 2018-01-05 2018-01-08

Solução:

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

O resultado é:
id partida chegada date_difference dias
1 25-03-2018 2018-04-05 11 12
2 2019-09-12 23-09-2019 11 12
3 2018-07-14 2018-07-14 0 1
4 2018-01-05 2018-01-08 3 4

Discussão:


Para contar a diferença entre as datas, use o JULIANDAY() função, que conta o número de dias desde o meio-dia em Greenwich em 24 de novembro de 4714 a.C. Você usa o JULIANDAY(date) para cada uma das duas datas; simplesmente subtraia-os usando um sinal de menos (-):

JULIANDAY(arrival) - JULIANDAY(departure)

Na maioria dos casos, o que você realmente quer é o número de dias entre a primeira e a segunda data inclusive . Então você precisa adicionar 1 dia à diferença em dias:

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