Два столбца даты, одна дата. Как я могу получить данные? - PullRequest
1 голос
/ 01 марта 2012

У меня следующая проблема:

В MySQL у меня есть таблица, которая содержит два столбца даты start_date и end_date.Формат даты: гггг-мм-дд.То, что я пытаюсь сделать, - это получить все данные из всех строк, в которых указана определенная дата, скажем, «2012-03-05», или один из этих столбцов даты.

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

Спасибо.

Ответы [ 4 ]

4 голосов
/ 01 марта 2012
SELECT * FROM table WHERE start_date <= '2012-02-29' AND end_date >= '2012-02-29';

Должен это сделать.

3 голосов
/ 01 марта 2012

Это очень распространенный способ структурирования таблиц по диапазонам дат, особенно в временных базах данных дизайнах.Это позволяет очень эффективно выполнять запросы на основе диапазона, предполагая, что индексы для обоих столбцов существуют.Вы запрашиваете данные следующим образом:

select *
from mytable t
where t.start_date <= @desired_date and t.endDate > @desired_date

@desired_date - это дата, за которую вы хотите запросить, например, «2012-03-05».

Обратите внимание на <=с одной стороны и > с другой стороны, без =.Это сделано для того, чтобы диапазоны от-до определяли непересекающиеся интервалы.

2 голосов
/ 01 марта 2012
SELECT * FROM mytable
WHERE '2012-03-05' BETWEEN start_date AND end_date;
2 голосов
/ 01 марта 2012

Не уверен, попробуйте что-то вроде этого:

SELECT
    *
FROM
    mytable
WHERE
    '2012-03-05' BETWEEN start_date AND end_date
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...