Даты MySQL между датами
Мне интересно, есть ли способ в MySQL 4.1+ запрашивать конкретные даты между диапазонами дат в моих записях?
Для краткого примера у меня есть две записи с диапазонами даты и времени, например
ID | Activity | Start Date | End Date
1 Closed 1/1/11 11:00:00 1/4/11 11:00:00
2 Open 1/15/11 10:00:00 1/19/11 09:00:00
Что я хочу знать, есть ли способ получить даты между "Датой начала" и "Датой окончания" для каждой из этих записей? Вот так:
1/2/11, 1/3/11
И
1/16/11, 1/17/11, 1/18/11
Или, по крайней мере, способ приблизиться к этому и использовать PHP чтобы закончить оставшуюся часть пути? Спасибо!
3 answers
Иордания,
Это невозможно напрямую с MySQL 4. И я думаю, что эту логику не следует помещать в ваш уровень базы данных.
Однако есть вопрос о StackOverflow, который относится к вашей проблеме, и решение - это хранимая процедура (но для этого вам нужен mysql 5). Просмотрите его здесь: Получите список дат между двумя датами
Я нашел не готовый к использованию, но разумный подход к вашей проблеме в PHP на этом веб-страница: http://prajapatinilesh.wordpress.com/2009/05/07/get-all-dates-between-two-dates-using-php-code/
Надеюсь, это поможет вам в правильном направлении.
Это может решить вашу проблему:
SELECT * FROM `your_table` WHERE start_date > '2011-01-01' AND end_date < '2011-01-04'
Я уже подразумевал это в своих собственных запросах mysql раньше.
SELECT id FROM table WHERE some_date BETWEEN start_date AND end_date