比较MySQL数据库中的两个时间值

时间:2011-05-03 23:48:19

标签: php mysql phpmyadmin

我试图比较两组时间,以确定它们是否重叠。这就是我现在所拥有的......

$sql = "SELECT * FROM schedule WHERE starttime>='$starttime' AND endtime<='$endtime' AND day='$updateday'";

现在这不起作用,因为看起来你无法比较时间值......所以我完全不确定如何做到这一点?

5 个答案:

答案 0 :(得分:0)

MySQL中的日期时间字段存储为(例如)

  

'2011-05-03 17:01:00'

所以你应该可以做类似

的事情
$starttime = date('Y-m-d H:i:s', $timestamp);

其中$ timestamp是您关注时间的时间戳。然后继续查询。

您可以使用mktime()strtotime()(如果从时间的字符串表示开始,如早期的MySQL查询)或当前时间仅time()来创建时间戳

答案 1 :(得分:0)

我知道您使用“time”作为数据类型。这应该不是问题,因为您可以使用“时间”类型比较字段。您可能希望将错误报告级别设置为最大值,或者在mysql_query之前输出$ sql语句以重新检查您正在构建可以在第一时间返回结果的查询。还要检查您的数据库中是否有有效的数据集(调试时发生了一次)。

答案 2 :(得分:0)

为什么不使用unix时间戳进行比较?

$sql = "SELECT * FROM schedule WHERE UNIX_TIMESTAMP(starttime)>=$starttime AND UNIX_TIMESTAMP(endtime)<=$endtime AND day='$updateday'";

此外,我认为你正在比较字符串,我不确定它是否会起作用。

答案 3 :(得分:0)

假设您使用的是TIME type,您的格式“10:00:00”应该有效。

不要听起来像你的母亲,但一定要在你的查询工作后参数化。

答案 4 :(得分:0)

我确实在sql上的phpmyadmin上运行了SELECT语句,然后尝试在网页上执行它并且很棒,就是使用它并在此之前考虑:

CAST('the_value_you_want_to_be_compared', AS the_type_you_want_to_compare)

示例:

如果您想比较一天的日期,您的表名是活动:

SELECT * FROM activities WHERE date = CAST('2015-10-29', AS date)

依旧......