«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как точно рассчитать возраст за годы с даты рождения в SQL Server?

Как точно рассчитать возраст за годы с даты рождения в SQL Server?

Опубликовано в 2025-03-23
Просматривать:926

How to Accurately Calculate Age in Years from a Date of Birth in SQL Server?

точно рассчитать возраст даты рождения в SQL Server

]

вопрос:

Как преобразовать дату рождения, хранящуюся как nvarchar (25) в дату в SQL Server, а затем вычислить его соответствующий возраст за последние годы?

]

пример данных:

] ] ] ] ] ] ] ] ] ] ] ] ] ] ]
ИДЕНТИФИКАТОР Имя dob
1 Джон 1992-01-09 00:00:00
2 Салли ] 1959-05-20 00:00:00
]

ожидаемый выход:

] ] ] ] ] ] ] ] ] 1992-01-09 00:00:00 ] ] 2 Салли 64 ] 1959-05-20 00:00:00 ] ] ]
ИДЕНТИФИКАТОР Имя ВОЗРАСТ dob
1 Джон 31 ]
] ] ]

ответить: точно рассчитать возраст ]]

первоначально предложенный подход сталкивается с проблемами при рассмотрении неровностей легальных лет и месячных дней. Современные версии SQL Server предоставляют нам улучшенные методы для решения этих сложностей.

]

лучший способ вычислять возраст целых чисел: ]

этот метод прост и прост, но точность может быть немного ниже, чем десятичный метод.

]

SELECT
    (YEAR(GETDATE()) - YEAR(DOB)) - CASE WHEN MONTH(GETDATE()) 

лучший способ вычислять возраст десятичных дел: ]

В этом методе используется функция

datediff и оператор case для точного расчета возраста и рассмотреть вопрос о том, прошел ли день рождения в этом году. ]

SELECT
    DATEDIFF(year, DOB, GETDATE()) - CASE WHEN MONTH(GETDATE()) 
Обратите внимание, что приведенный выше код предполагает, что столбец

dob был преобразован в тип . If dob все еще из nvarchar (25) type, вам нужно добавить преобразование типа в запрос, например: преобразовать (date, dob, 120) . Выбор соответствующего стиля преобразования зависит от конкретного формата вашего dob data. Например, конвертировать (date, dob, 120) подходит для формата 'yyyy-mm-dd hh: mi: ss'. Вам может потребоваться настроить этот раздел в соответствии с вашим форматом данных. Окончательный запрос должен быть похож на: ]

SELECT
    DATEDIFF(year, CONVERT(DATE, DOB, 120), GETDATE()) - CASE WHEN MONTH(GETDATE()) 
заменить

yourtable с именем вашей таблицы. Метод выбора целочисленного или десятичного значения зависит от ваших требований точности. Десятичный метод более точен, но целочисленный метод более краткий. ]

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3