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 .

Читайте также: