PHP需要有关MYSQL DB和日期的帮助

时间:2011-08-13 20:41:27

标签: php mysql database date

我在数据库中有两个字段表示开始时间和结束时间,另一个字段可能或可能未设置,称为“日期”。

在SELECT时,我需要知道我是在时间范围内还是在时间范围外,并且如果我在时间范围内,只有当日期是今天时才设置日期。

在PHP中执行此操作的最佳方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

  

选择后,我需要知道我是否在时间范围内

SELECT (NOW() BETWEEN date_min AND date_max) is_happening_now
  FROM your_table
如果NOW()在date_min和date_max之间,则

is_happening_now包含一个包含true的布尔值。显然,这将创建一个您可能不需要的单独列,如果需要,可以将条件放在WHERE子句中。

  

如果日期已设置,如果我在时间范围内,则仅当日期为今天。

我对这一部分并不是很了解,但您可以使用DATE函数从DATETIME中提取日期(例如:current_date = DATE(some_date)

答案 1 :(得分:2)

我的原始答案根本没有回答你的问题。希望这会。

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

如果来自PHP的日期('Hm-s')在范围内,它将返回字符串“inRange”,否则它将返回字符串“notInRange”并将匹配数据库中日期为NULL的记录,或当前日期。

你也可以像这样制作SQL语句:

SELECT IF(TIME(CURRENT_TIMESTAMP) BETWEEN start-time AND end-time, 'inRange',
'notInRange') WHERE myDate == CURRENT_DATE OR myDate IS NULL;