MySQL, получить данные между столбцами даты начала и окончания? - PullRequest
2 голосов
/ 05 июля 2011

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

У меня есть следующие данные:

id  category_id     start_date  end_date    image   campaign_id     published
1   1               2011-07-05  2011-07-5   a.gif   3               1           
2   1               2011-07-01  2011-07-15  c.gif   3               1
3   37              2011-07-01  2011-07-04  d.gif   3               1 

Я ожидаю получить строки 1 и 2 из этого запроса:

SELECT id, category_id, start_date, end_date FROM categories_campaigns WHERE  start_date <= NOW() AND end_date >= NOW();

Из того, что я испытал, вернулась только вторая строка. Также этот, дает мне второй,

SELECT category_id, start_date, end_date FROM categories_campaigns WHERE   end_date >= NOW();

Следующий возвращает мне все 3,

SELECT category_id, start_date, end_date FROM categories_campaigns WHERE   start_date <= NOW();

Тип данных для обоих столбцов - ДАТА. Итак, мой вопрос, как это решить? Почему это происходит ? Или у меня есть очевидная ошибка, которую я не могу найти, что искать.

Большое спасибо за то, что вы искали любую помощь!

-------------- РЕДАКТИРОВАТЬ: РЕШЕНО!

Отлично! Я нашел решение,

SELECT category_id, start_date, end_date FROM categories_campaigns WHERE   start_date <= DATE(NOW()) and end_date >= DATE(NOW());

Возвращает мне первые 2 строки, как и ожидалось! Да уж!! ; D

Ответы [ 3 ]

2 голосов
/ 05 июля 2011

Рабочий запрос

SELECT category_id, start_date, end_date FROM categories_campaigns WHERE   start_date <= DATE(NOW()) and end_date >= DATE(NOW());
0 голосов
/ 05 июля 2011

Полагаю, start_date и end_date имеют тип данных date.Но NOW() возвращает значение даты - время .

Используйте CUR_DATE() вместо NOW()

0 голосов
/ 05 июля 2011

Я думаю, вы могли бы использовать это:

SELECT category_id, start_date, end_date FROM categories_campaigns WHERE left(now(),10) between start_date and end_date;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...