@Dark_Dante

Как сравнить даты?

Здравствуйте.
Помогите пожалуйста с такой вот ситуацией. Есть таблица с полями ID, NAME, START_DATE, END_DATE.
В полях START_DATE и END_DATE хранятся соотвественно даты начала и конца какого либо события. Хранятся в формате "%Y%m", например 199905, 200507 и так далее. А если событие на данный момент не завершено, то в столбце END_DATE хранится 0.
Мне надо выбрать все записи c заданным именем, в диапазон которых попадает некая дата.
Делаю так
SELECT id, name FROM tbl WHERE NAME="что_то_там" AND STR_TO_DATE(START_DATE, '%Y%m')>=STR_TO_DATE('200005', '%Y%m') AND STR_TO_DATE(IF(END_DATE=0, DATE_FORMAT(CURRENT_TIMESTAMP, '%Y%m'), END_DATE), '%Y%m')  <=STR_TO_DATE('200005', '%Y%m');

Выводит какую то фигню или не выводит ничего. Как правильно сделать такую штуку?
  • Вопрос задан
  • 160 просмотров
Пригласить эксперта
Ответы на вопрос 2
@BorisKorobkov Куратор тега MySQL
Web developer
START_DATE и END_DATE должны быть не varchar, а date
Ответ написан
@vyrkmod
Пишу на php. И не стыдно.
... WHERE ... AND START_DATE <= 200005 AND (END_DATE=0 OR END_DATE >= 200005)

Если "даты" хранятся как строки, а не числа - используем CAST(START_DATE AS UNSIGNED).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы