比较时间戳和日期变量(MySQL和PHP)

4

非常感谢您的帮助。

假设我有一个MySQL数据库,其中有一个时间戳列,其值为“1305590400”,如何将其与PHP变量(例如“2011-05-17”)进行比较? 我想完全忽略时间部分,只比较日期。

目前,我正在尝试使用以下代码使其工作,但是它没有返回任何结果:

WHERE  FROM_UNIXTIME('timestamp_column','%Y-%m-%d') = '" . $date. "'
3个回答

5

如果你的时区和 $date 不同,那么你可能无法得到预期的结果,因为 $date 可能存在时间偏移,不等于你所在时区的 00:00:00

WHERE timestamp_column BETWEEN '" . strtotime($date) . "' AND '" . strtotime($date, '+1 day') . "'

更确切地说:

    WHERE timestamp_column >= '" . strtotime($date) . "'
      AND timestamp_column < '" . strtotime($date, '+1 day') . "'

时间戳列包含随机时间,有没有办法忽略时间,只比较日期? - David
@David:这就是我为什么添加了“BETWEEN”的原因。目前查询检索的是从今天中午到明天中午之间的所有内容。 - zerkms
我唯一的问题是,我正在一个日历脚本中使用它,我不认为它会返回正确的结果,不过我现在肯定会尝试一下。 - David

0

1
MySQL如何使用索引 - zerkms
1
我假设这个链接会让我相信我的解决方案更慢,我是对的吗?^^ - Thomas Hupkens
是的。您的查询将始终导致全表扫描。如果您有大量行并且需要快速查找,请不要在WHERE子句中对字段应用函数。 - zerkms

0
你可以将时间戳转换为格式化日期。
SELECT FROM_UNIXTIME(1358871753,'%Y %D %M');

生成:2013年1月22日


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接