Как правильно вычислить дату в sql запросе?

93
26 марта 2021, 00:50

Есть задача, сделать выборку в таблице по возрасту - до ЛЕТ. Дата рождения хранится в типе поля date. Пытаюсь сделать так (25 лет для примера):

DATE_SUB(CURDATE(), INTERVAL 25 YEAR) <= birth

Но проблема в том, что если у человека прошел возраст на 1 день больше, то ему все равно 25 лет, но он уже не попадает в список. Как можно сделать с ориентировкой именно на ГОД ?

Answer 1

Есть ответ в официальной документации:

    SELECT birth, CURDATE(),
           TIMESTAMPDIFF(YEAR,birth,CURDATE()) AS age
           FROM your_table
           WHERE TIMESTAMPDIFF(YEAR,birth,CURDATE()) <= 25
Answer 2

Мне лично считать удобнее так:

select * from t where year(curdate) - year(birth) < yourvalue
;

update

Я не знаком с MySQL совсем, но такой вариант работает в других БД

select * from t where year(curdate - birth) < yourvalue
;
READ ALSO
Вопрос про внешние ключи MySQL

Вопрос про внешние ключи MySQL

Как сделать автоматическую смену внешнего ключа в таблице при удалении родительской записи в другой таблице?

104
yii2 | Работа с константами

yii2 | Работа с константами

У меня есть код

117
Автоматическая очистка кеша на сайте

Автоматическая очистка кеша на сайте

У меня есть сайтИ я хочу реализовать на нём автоматическую очистку кеша

125
Как заменить данные из многомерного массива?

Как заменить данные из многомерного массива?

Как в данном массиве найти элемент и поменять соседнее значение? те

121