@antowa_plawkevich
Junior Front-end developer

SQL запрос на вывод диапазона возраста имея только дату рождения?

Сталкнулся с проблемой, нужно вывести ИД , Статус , Название работы и диапазон возрастной категории,
не могу вывести её так-как в базе есть только дата рождения человека от 19.03.1958 до 2005 года, не могу понять как сделать запрос BETWEEN чтоб он автоматические делал диапазон в возрасте то есть сортировал от 25 допустим до 50 лет.
SELECT LoginID,MaritalStatus,BirthDate,JobTitle
FROM HumanResources.Employee where MaritalStatus='S' and JobTitle like '%Specialist' and BirthDate Between 25 and 50 ( не срабатывает, я понимаю что нужно таким способом указывать дату рождения) , укажите на ошибку, спасибо.
  • Вопрос задан
  • 4510 просмотров
Решения вопроса 1
@d-stream
Готовые решения - не подаю, но...
Ну можно "в лоб" - вычислять возраст как datediff(year, BirthDate, getdate())
или даже case сразу кластеризовать это по возрастным группам.

То есть нечто типа:
SELECT 
LoginID,
age_group = datediff(year, BirthDate, getdate())  -- или же кэйсом разбивать на интервалы
FROM HumanResources.Employee 
where age_group between 25 and 30


В зависимости от потребности в примерном возрасте или "полных лет" - чутка модифицировать datediff
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@v_m_smith
лучше бы я пил и курил
Если достаточно кластеризовать по десяткам лет, то можно вот так, округлением

SELECT ROUND(datediff(YEAR, SYSDATETIME(), '19650505' ) , -1);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы