Как извлечь количество дней между 2 датами в оракуле sql? - PullRequest
0 голосов
/ 03 декабря 2018

Я хочу количество дней между этими двумя датами, используя Oracle SQL

Даты:

BETWEEN "1/1/2018" AND "6/11/2018"

Как написать SQL-запрос?

Ответы [ 4 ]

0 голосов
/ 03 декабря 2018

Как указывалось в других ответах, вы можете просто разделить две даты, но также нет необходимости в какой-либо дополнительной арифметике.

Код:

select to_date('6/11/2018', 'DD/MM/YYYY') - to_date('1/1/2018', 'DD/MM/YYYY')
  from dual;

Результат: 309

0 голосов
/ 03 декабря 2018

Просто используйте

select date'2018-11-06' - date'2018-01-01' + 1 as days_difference
  from dual;

DAYS_DIFFERENCE
---------------
     310

или

with t( myDate ) as
(
 select date'2018-11-06' from dual union all 
 select date'2018-01-01' from dual
)
select max(myDate) - min(myDate) + 1 as days_difference
  from t;

DAYS_DIFFERENCE
---------------
     310
0 голосов
/ 03 декабря 2018

Вы можете просто сделать:

select date1-date2 form dual;

или

select (sysdate-to_date('01-jan-2018'))-(sysdate-to_date('10-jan-2018'))from dual;
0 голосов
/ 03 декабря 2018
between date '2018-01-01' and date '2018-11-06'

, где литерал DATE выглядит именно так: DATE 'YYYY-MM-DD'

В вашем примере:

  • двойные кавычки не могут использоваться
  • дажеесли вы используете одинарные кавычки, это будет строка, а не DATE, поэтому вы будете зависеть от того, сможет ли Oracle преобразовать ее (неявно) в дату или нет
  • , поэтому всегда используйте даты, а не строки

[РЕДАКТИРОВАТЬ]

Таким образом вы выбираете целый календарь между этими двумя датами:

select date '2018-01-01' + level - 1
from dual
connect by level <= date '2018-11-06' - date '2018-01-01' + 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...