Oracle посчитать возраст по дате рождения
Обновлено: 04.07.2024
Я хочу рассчитать текущий возраст от даты рождения в моей функции Oracle.
То, что я использую, это (Today-Dob)/30/12 , но это неверно, так как некоторые месяцы имеют 31 день.
Мне нужно получить правильный возраст с максимальной точностью. Как я могу это сделать?
ОТВЕТЫ
Ответ 1
Ответ 2
Для бизнес-логики я обычно считаю десятичное число (в годах) полезным:
Ответ 3
Это легко и прямолинейно.
Ответ 4
И альтернатива без использования арифметики и чисел (хотя в этом нет ничего плохого):
Ответ 5
Или как насчет этого?
Ответ 6
Это кажется намного проще, чем кто-либо предложил
Ответ 7
Возраст (полные годы) Лица:
Ответ 8
Ответ 9
Вы можете попробовать
Вы можете настроить ROUND так, чтобы отображалось столько знаков после запятой, сколько вы хотите.
Размещение даты в десятичном формате, как указано выше, помогает при расчете возрастных групп и т.д.
Это просто надуманный пример. В реальных сценариях вы не будете конвертировать строки в дату, используя TO_DATE .
Однако, если у вас есть дата рождения в формате даты, вы можете безопасно вычесть две даты.
Ответ 10
Предположим, что вы хотите, чтобы возраст (только число лет, фиксированное число) человека, родившегося в June 4, 1996 , выполнил эту команду:
Результат: (выполнено 28 мая 2019 г.)
Объяснение:
- SYSDATE : Получить актуальную дату системы (ОС).
- TO_DATE('04-06-1996') : преобразовать дату рождения VARCHAR (строка) в DATE (тип SQL).
- TO_NUMBER(. ) : преобразовать дату в NUMBER (тип SQL)
- Разделите на 365.25 : чтобы биссекстильный год каждые четыре года (4 * 0,25 = еще 1 день).
- Trunc(. ) : извлечь всю часть только из номера.
Ответ 11
Вы можете попробовать метод ниже,
SELECT EXTRACT(YEAR FROM APP_SUBMITTED_DATE)-EXTRACT(YEAR FROM BIRTH_DATE) FROM SOME_TABLE;
Он будет сравнивать годы и соответственно определять возраст.
Вы также можете использовать SYSDATE вместо APP_SUBMITTED_DATE .
Читайте также: