2011-05-17 59 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日