Я пытаюсь напечатать для каждого человека его возраста, используя этот формат:Как получить возраст в годы, месяцы и дни, используя Oracle
например: 19 лет, 8 месяцев, 13 дней.
У меня много googled, и я заметил, что существует определенная функция для расчета разницы между датами DATEDIFF
.
Однако эта функция не существует в SQL*Plus
, поэтому я продолжал пытаться использовать MONTHS_BETWEEN()
и некоторые операторы.
Моя попытка:
SELECT name , ' ' ||
FLOOR(MONTHS_BETWEEN(to_date(SYSDATE),to_date(date_of_birth))/12)||' years ' ||
FLOOR(MOD(MONTHS_BETWEEN(to_date(SYSDATE),to_date(date_of_birth)),12)) || ' months ' ||
FLOOR(MOD(MOD(MONTHS_BETWEEN(to_date(SYSDATE),to_date(date_of_birth)),12),4))|| ' days ' AS "Age"
FROM persons;
Мой вопрос основывается на получении дней. Я не знаю, как мне рассчитать дни, используя эту функцию («попытался делить на 4 или 30); Я думаю, что моя логика плоха, но я не могу понять, какие идеи?
Вы должны добавить «оракул» к вам тегам –
я думаю, что это тот же вопрос [здесь] (http://stackoverflow.com/questions/3015431/oracle-age-calculation-from-date-of-birth -и-сегодня) –