Даты 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 чтобы закончить оставшуюся часть пути? Спасибо!

Author: Jordan, 2011-01-07

3 answers

Иордания,

Это невозможно напрямую с MySQL 4. И я думаю, что эту логику не следует помещать в ваш уровень базы данных.

Однако есть вопрос о StackOverflow, который относится к вашей проблеме, и решение - это хранимая процедура (но для этого вам нужен mysql 5). Просмотрите его здесь: Получите список дат между двумя датами

Я нашел не готовый к использованию, но разумный подход к вашей проблеме в PHP на этом веб-страница: http://prajapatinilesh.wordpress.com/2009/05/07/get-all-dates-between-two-dates-using-php-code/

Надеюсь, это поможет вам в правильном направлении.

 0
Author: Richard Tuin, 2017-05-23 11:47:43

Это может решить вашу проблему:

SELECT * FROM `your_table` WHERE start_date > '2011-01-01' AND end_date < '2011-01-04'
 1
Author: Diablo, 2011-01-06 22:36:30

Я уже подразумевал это в своих собственных запросах mysql раньше.

SELECT id FROM table WHERE some_date BETWEEN start_date AND end_date
 0
Author: dqhendricks, 2011-01-06 23:01:36