sql >> Databáze >  >> RDS >> Oracle

Jak vypočítat rozdíl mezi dvěma daty v PostgreSQL/Oracle

Problém:

Máte dva sloupce typu datum a chcete vypočítat rozdíl mezi nimi.

Příklad:

V travel tabulka má tři sloupce:id , departure a arrival . Chcete vypočítat rozdíl mezi arrival a departure a počet dní od příjezdu do odjezdu včetně .

travel tabulka vypadá takto:

id odjezd příjezd
1 25. 3. 2018 2018-04-05
2 2019-09-12 23. 9. 2019
3 2018-07-14 2018-07-14
4 2018-01-05 2018-01-08

Řešení:

SELECT
  id,
  departure,
  arrival,
  arrival - departure AS date_difference,
  arrival - departure + 1 AS days
FROM travel;

Výsledek je:

id odjezd příjezd rozdíl data dny
1 25. 3. 2018 2018-04-05 11 12
2 2019-09-12 23. 9. 2019 11 12
3 2018-07-14 2018-07-14 0 1
4 2018-01-05 2018-01-08 3 4

Diskuse:

Chcete-li počítat rozdíl mezi daty jako dny v PostgreSQL nebo Oracle, musíte jednoduše odečíst jedno datum od druhého, např. arrival - departure .

Ale ve většině případů to, co opravdu chcete, je počet dní od prvního rande do druhého rande včetně . Poté je třeba k rozdílu ve dnech přičíst 1 den:arrival - departure + 1 .


  1. Jaké je výchozí pořadí seznamu vráceného z volání filtru Django?

  2. SQLite UNIQUE omezení

  3. Jak provést hromadnou korespondenci v Accessu 2016

  4. Výkon MySQL:Převod MySQL na MariaDB