PHP Нужна помощь с базой данных MYSQL и датами - PullRequest
0 голосов
/ 14 августа 2011

У меня есть два поля в БД с указанием времени начала и окончания, и еще одно поле, которое может быть или не быть установлено, называется «дата».

После SELECT мне нужно знать, нахожусь ли я в или вне временного диапазона, и установлена ​​ли дата, если я нахожусь в временном диапазоне, только если дата сегодня.

Каков наилучший способ сделать это в PHP?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 14 августа 2011

Мой первоначальный ответ не отвечал на ваш вопрос, как я понял. Надеюсь, что так и будет.

$query = "SELECT IF(".date('H-m-s')." BETWEEN start-time AND end-time, 
'inRange', 'notInRange') WHERE `date` == CURRENT_DATE OR `date` IS NULL";

Если date ('Hm-s') из PHP находится в диапазоне, он вернет строку "inRange", в противном случае он вернет строку "notInRange" и сопоставит ее с записями в вашей базе данных, где date равно NULL или текущая дата.

Вы также можете сделать оператор SQL следующим образом:

SELECT IF(TIME(CURRENT_TIMESTAMP) BETWEEN start-time AND end-time, 'inRange',
'notInRange') WHERE myDate == CURRENT_DATE OR myDate IS NULL;
2 голосов
/ 14 августа 2011

После ВЫБОРА мне нужно знать, нахожусь ли я в или вне временного диапазона

SELECT (NOW() BETWEEN date_min AND date_max) is_happening_now
  FROM your_table

is_happening_now содержит логическое значение, содержащее true, если NOW () находится между date_min и date_max. Очевидно, что это создаст отдельный столбец, который вам может не понадобиться, при необходимости вы можете поместить условие в предложение WHERE.

если дата установлена, если я нахожусь в диапазоне времени, только если дата сегодня.

Я не совсем понял эту часть, но вы можете извлечь дату из DATETIME с помощью функции DATE (например: current_date = DATE(some_date)

...