Выборка данных за определенный период

LDZ

Новичок
Выборка данных за определенный период

Прошу Вас помочь с составлением запросов.

1. Запрос, выводящий из таблицы users пользователей у которых сегодня ДР.(ДР хранится в поле dr в виде YYYY-mm-dd)
2. Запрос, выводящий из таблицы users пользователей у которых будет ДР в ближайшие 14(30/50 и т.д.) дней.

Много литературы перечитал, на русском еще не нашел. В инглише понимаю с трудом

Заранее благодарю
 

LDZ

Новичок
С первым запросом у меня получилось справится самостоятельно.

Со вторым все мучаюсь

-~{}~ 14.06.07 17:43:

Автор оригинала: Bitterman
LDZ

Надеюсь подразумевается поле типа date, а не какой-нибудь varchar(10)?
Именно date
 

LDZ

Новичок
Автор оригинала: Bitterman
LDZ

И в чем проблема?
В том что я с трудом понимаю. как составить условие, игнорируя год.

Я так понимаю:

PHP:
SELECT `name` FROM `users` WHERE `dr`= 'период, вычисляемый какими-то функциями'
 

LDZ

Новичок
Видимо после 9 часов копания мой мозг отказывается что-то понимать..

Спасибо.. Буду читать..

-~{}~ 14.06.07 18:07:

Это как-то связано с
TO_DAYS(NOW()) + TO_DAYS(dr) >='14' ?

Я с ума сойду

-~{}~ 14.06.07 18:29:

дошел умом до этого

$sql = "SELECT * FROM users WHERE TO_DAYS(EXTRACT(MONTH_DAY FROM NOW())) + TO_DAYS(EXTRACT(MONTH_DAY FROM dr)) <= 15";

Что здесь не так?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
LDZ
Тормознул я... :(
выбирается дата больше текущей одним словом...
 

Bitterman

Новичок
LDZ
А может рассчитать необходимый интервал в PHP и подставить в запрос?
 

LDZ

Новичок
ТАк если функция TO_DAYS считает количество дней, прошедших с 0 до указанной даты, то тогда это скорее всего не подойдет.

Ведь при таком сравнении будет учитываться и год, что в моем случае не нужно.

Мне нужно найти пользователей, у которых mm.dd соответствует текущему месяцу и текущему дню + период в 14 дней

Вроде понятно выразился

-~{}~ 14.06.07 18:59:

Bitterman
А может рассчитать необходимый интервал в PHP и подставить в запрос?
Так надо бы по идее в запросе это сделать...
 

Bitterman

Новичок
LDZ
Раз надо не учитывать год, то тогда да, в PHP не получится пожалуй. Смотри в сторону функции DAYOFYEAR.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
SELECT * FROM table WHERE DAYOFYEAR(date)-DAYOFYEAR(NOW())<=14 AND DAYOFYEAR(date)-DAYOFYEAR(NOW())>=0
 

Bitterman

Новичок
Mr_Max
угу.
Единственный недостаток, что этот запрос, например, 29 декабря покажет ДР только тех, кто родился 30 и 31, а вот те кто появился на свет с 1 по 12 января будут в пролете. :)
 

LDZ

Новичок
Mr_Max
Запрос работает. Огромно спасибо.

Только как решить трабл, описанный Bitterman?
 

Bitterman

Новичок
Только как решить трабл, описанный Bitterman?
Подумать. Подобрать условие, которое будет выполняться только в описанной ситуации. Вобщем это уже задача на чистую логику.
 

Trianon

Новичок
$sql= "SELECT * FROM users
WHERE TO_DAYS(CONCAT(YEAR(NOW()), DATE_FORMAT(bday, '-%m-%d')))
BETWEEN TO_DAYS(NOW()) AND $days_up+TO_DAYS(NOW())";

только с високосным годом могут быть проблемы...
 
Сверху