Как перевести количество дней между двумя датами в числа c в OracleSQL? - PullRequest
0 голосов
/ 27 января 2020

Я использую этот запрос

select current_date - table.DOB/365 as checkagainst

, чтобы получить дни между сегодняшней датой и датой рождения человека. Он возвращает то, что выглядит как число c количество дней, но затем, когда я пытаюсь разделить его на 12, я получаю ошибку:

ORA-00932: inconsistent datatypes: expected NUMBER got DATE.

Я просто хочу разделить разницу в дате между DOB и сегодняшняя дата на 365, чтобы получить возраст в годах.

Ответы [ 2 ]

1 голос
/ 27 января 2020

Используйте скобки:

select ( current_date - table.DOB )/365

Или, еще лучше, используйте months_between():

select months_between(table.DOB, current_date) / 12
0 голосов
/ 27 января 2020

Разница между датами возвращает количество дней между двумя датами.

Поэтому используйте следующее:

Floor(Sysdate - table.DOB) -- number of days
Floor(Months_between(sysdate, table.DOB)) -- number of months
Floor((Months_between(sysdate, table.DOB)/12) -- number of years

Этаж обязательно покажет округленное до ближайшего небольшого числа, так как возраст должен быть .

Ура !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...