Вывести список меньше года и прошло больше от двух лет но не более четырех

NOIP

Гуру форума
Регистрация
17 Фев 2008
Сообщения
327
Реакции
77
Доброго времени суток, как вывести из sql данные для которых не прошло еще года с момента создания я понимаю.

А как вывести данные которым более двух лет но менее четырех. Не совсем понимаю. Я так понимаю битвином но как лучше высчитать разницу?

Еще пример.
Есть таблица где записаны даты рождения людей, мне нужно получить список людей возраст которых больше 10 но меньше 20. Как лучше это сделать?

Формат дат обычный, Y-m-d
 
Код:
SELECT * FROM `test` WHERE DATEDIFF(CURRENT_DATE(),`date_create`) <  365 OR  (DATEDIFF(CURRENT_DATE(),`date_create`) > (365*2) AND DATEDIFF(CURRENT_DATE(),`date_create`) < (365*4))

совет. Храни даты в unixtime формате в int. Чтобы не морочиться с работой с ними. В таком виде они и индексируются хорошо.
 
SQL:
SELECT *
FROM your_table
WHERE created_at BETWEEN DATE_SUB(NOW(), INTERVAL 4 YEAR) AND DATE_SUB(NOW(), INTERVAL 2 YEAR);

Что касается получения списка людей, возраст которых больше 10, но меньше 20 лет - Таблица people с полем birthdate,


SQL:
SELECT *
FROM people
WHERE DATE_DIFF(NOW(), birthdate) BETWEEN 11 AND 19;
 
Назад
Сверху