2014-02-20 59 views
0

我的表中有一個字段叫做created_at,它是一個時間戳。我試圖寫一個查詢在哪裏會給我的數據,其中時間戳的日期是當前日期。mySQL比較時間戳與當前日期

$result = mysql_query("SELECT *FROM visitors WHERE DATE(FROM_UNIXTIME(created_at)) = 
CURDATE()") or die(mysql_error()); 

我擡頭看看如何從時間戳中得到日期,這就是爲什麼我使用DATE(FROM_UNIXTIME(created_at))。 我的查詢返回時沒有發現任何東西,但我的數據庫中的created_at字段是今天的日期。我究竟做錯了什麼?

+0

查詢是正確的,必須有其他原因爲什麼沒有找到條目。 – pilsetnieks

+0

我懷疑它不是unixtimestamp – 2014-02-20 00:48:26

+0

@Dagon你是什麼意思? – Aaron

回答

1

時間戳記數據類型包括秒,所以時間永遠不會匹配。在比較之前,您需要從「created_at」時間戳和當前日期/時間(now())中減少秒數,以便您有機會僅匹配日期部分。例如:

select * from visitors where DATE_FORMAT(created_at,'%Y%c%d')=DATE_FORMAT(now(),'%Y%c%d') 
+0

mysql DATE()函數做什麼? – 2014-02-20 00:44:07

+0

Date函數應該將非日期信息修剪掉時間戳 – Aaron

+0

然後從訪問者處選擇日期(created_at),日期(now(),日期(FROM_UNIXTIME(created_at))並直觀比較列以查看它們的不同之處。根據產生相同列的語法的where子句。 –