Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да изчислим разликата между две дати в PostgreSQL/Oracle

Проблем:

Имате две колони от типа дата и искате да изчислите разликата между тях.

Пример:

В travel таблица, има три колони:id , departure и arrival . Искате да изчислите разликата между arrival и departure и броя на дните от пристигане до заминаваневключително .

travel таблицата изглежда така:

id заминаване пристигане
1 25.03.2018 05.04.2018
2 12.09.2019 23.09.2019
3 14.07.2018 14.07.2018
4 2018-01-05 08.01.2018

Решение:

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

Резултатът е:

id заминаване пристигане разлика_дата дни
1 25.03.2018 05.04.2018 11 12
2 12.09.2019 23.09.2019 11 12
3 14.07.2018 14.07.2018 0 1
4 2018-01-05 08.01.2018 3 4

Дискусия:

За да преброите разликата между датите като дни в PostgreSQL или Oracle, просто трябва да извадите една дата от другата, напр. arrival - departure .

Но в повечето случаи това, което наистина искате, е броят на дните от първата дата до втората дата включително . След това трябва да добавите 1 ден към разликата в дните:arrival - departure + 1 .


No
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. От съхранена процедура върнете OUT параметър и OUT курсора и анализирайте резултата (Oracle)

  2. типовете локални колекции не са разрешени в SQL изрази

  3. Създаване на глобална временна таблица в Oracle

  4. OracleParameter и IN клауза

  5. Наклонена черта или без наклонена черта?