Есть у меня в таблице промежуток дат . `start` и `finish` с типом `datetime`
Как в запросе проверить время наступления даты ?
SELECT
p.razdel_id, p.product_id, p.summa,
IF (p.type = 1, 'checked', '') AS type
FROM
`product` AS p
INNER JOIN
`access` AS a ON a.id = p.`access_id`
WHERE
a.start < NOW() AND
a.finish > NOW() AND
p.`hide` = 0
Вот так не хочет :(
Цитата |
WHERE a.start < NOW() AND a.finish > NOW() |
выбрать записи, где a.start меньше текущей даты и a.finish больше текущей даты, так? Может надо наоборот? Выбрать записи, где текущее время больше a.start и меньше a.finish?
да вроде так и стоит
Kusss, я не понял в чем проблема то?
И вот это условие?
>Как в запросе проверить время наступления даты ?
Формализуй правильно, что подразумевается под наступлением даты?
Кстати как показывает практика, NOW() не бестпрактикс для создания запросов на выборку по текущей дате, лучше генерить дату в php, например так, gmdate('Y-m-d H:i:s'), а потом, что получилось вставлять в запрос.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
то есть мне вместо NOW() вставить скажем:
$now_date = date('Y-m-d H:i:s');
$sql = "
SELECT
p.razdel_id, p.product_id, p.summa,
IF (p.type = 1, 'checked', '') AS type
FROM
`product` AS p
INNER JOIN
`access` AS a ON a.id = p.`access_id`
WHERE
a.start < '$now_date' AND
a.finish > '$now_date' AND
p.`hide` = 0
";
Kusss, ну да. Это лучше в том плане, что такой код не зависит от настроек временной зоны базы данных. Просто бывают иногда проблемы, что у php и mysql разные временные зоны, и в итоге если написать код c NOW то время GMT будет отличаться от GMT в php, что приведет к багам.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
а как это сделать с помощью BETWEEN ?
Kusss, зачем? и так нормально
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.