Ответ
Предположим, есть таблица users с полями id, name и birth_date (дата рождения).
Запрос для вычисления возраста на летоисчисление:
SELECT id, name, birth_date
FROM users
WHERE EXTRACT(YEAR FROM AGE(CURRENT_DATE, birth_date)) > 30;
Функция AGE() (доступна в PostgreSQL) вычисляет интервал между датами. EXTRACT(YEAR FROM ...) извлекает количество полных лет из этого интервала.
Альтернативный, более универсальный запрос:
SELECT id, name, birth_date
FROM users
WHERE birth_date < CURRENT_DATE - INTERVAL '30 years';
Этот запрос находит всех, чья дата рождения была более 30 лет назад от текущей даты. Он работает в PostgreSQL, MySQL (с синтаксисом DATE_SUB(CURRENT_DATE, INTERVAL 30 YEAR)), и других СУБД с небольшими модификациями.
Пример с явным условием на год (менее точный):
SELECT id, name, birth_date
FROM users
WHERE EXTRACT(YEAR FROM CURRENT_DATE) - EXTRACT(YEAR FROM birth_date) > 30;
Этот вариант проще, но не учитывает месяц и день рождения, поэтому может быть неточным.