2011-05-17 128 views
4

任何帮助,高度赞赏。比较时间戳和日期变量(MySQL和PHP)

假设我有一个带有值“1305590400”的timestamp列的MySQL数据库,我该如何将它与一个名为“2011-05-17”的PHP变量进行比较?我想完全忽略时间部分,只能比较日期。

目前,我想获得它下面的工作,但它不返回任何结果:

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

回答

5

你没有得到结果,可能$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') . "' 
+0

我从来没有想过尝试的!我现在就给它一个... – David 2011-05-17 00:27:34

+0

+1天+1:D – alex 2011-05-17 00:30:44

+0

timestamp_column包含随机时间,有没有办法忽略时间,只是比较日期? – David 2011-05-17 00:33:29

0

只需

SELECT [...] WHERE '$you_var' = date(`timestamp_column`); 

MySQL date() function

+1

[mysql如何使用索引](http://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html) – zerkms 2011-05-17 00:33:07

+1

我认为这个链接会说服我,我的解决方案比较慢,我是对的吗? ? ^^ – 2011-05-17 00:36:46

+0

是的。您的查询将始终导致全扫描。如果你有很多行并且需要快速查找 - 请不要在你的WHERE字段中应用函数。 – zerkms 2011-05-17 00:38:08

0

你可以时间戳总是转换为格式化的日期。

SELECT FROM_UNIXTIME(1358871753,'%Y %D %M'); 

主要生产:2013 1月22日