[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с датами
Kusss
Есть у меня в таблице промежуток дат . `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

Вот так не хочет :(
rooor
Цитата
WHERE
a.start < NOW() AND
a.finish > NOW()

выбрать записи, где a.start меньше текущей даты и a.finish больше текущей даты, так? Может надо наоборот? Выбрать записи, где текущее время больше a.start и меньше a.finish?
Kusss
да вроде так и стоит blink.gif
chee
Kusss, я не понял в чем проблема то?
И вот это условие?

>Как в запросе проверить время наступления даты ?

Формализуй правильно, что подразумевается под наступлением даты?

Кстати как показывает практика, NOW() не бестпрактикс для создания запросов на выборку по текущей дате, лучше генерить дату в php, например так, gmdate('Y-m-d H:i:s'), а потом, что получилось вставлять в запрос.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Kusss
то есть мне вместо 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
"
;
chee
Kusss, ну да. Это лучше в том плане, что такой код не зависит от настроек временной зоны базы данных. Просто бывают иногда проблемы, что у php и mysql разные временные зоны, и в итоге если написать код c NOW то время GMT будет отличаться от GMT в php, что приведет к багам.


_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Kusss
а как это сделать с помощью BETWEEN ?
chee
Kusss, зачем? и так нормально smile.gif


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

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.