2015-06-22 99 views
1

在數據庫中,我存儲的日期值UNIX時間戳值eg'1434952110' 使用time()我現在想這個值,如下比較今天的日期與Unix時間戳值的數據庫

$jobpostdate = date("Y-m-d");//today's date passing in database to compare 

比較今天的價值查詢

$sql = "SELECT jsp_title, jsp_subtitle, jsp_desc, jsp_location, jsp_date "; 
$sql .= "FROM js_projects WHERE DATE(jsp_date) = '$jobpostdate' "; 

我試過上面的查詢,但即使該值是目前我越來越發現沒有行,我要去的地方錯了,我怎麼能比較日期值?我知道如何在PHP比較,但我不知道如何檢查查詢,請任何人可以幫助

回答

1

如果我理解正確的話你有一個VARCHAR領域的Unix時間戳,你無法改變這一點。

如果您直接比較unix時間戳,則只會得到匹配時間戳的精確秒的結果。

您可以使用FROM_UNIXTIME()的時間戳轉換的日期值,你可以實際使用:

WHERE DATE(FROM_UNIXTIME(jsp_date))=CURDATE() 

與此相比,當前日期戳記的日期部分,給你一天的所有數據庫條目。

注意:這可能會產生性能問題,因爲每次請求都會發生大量轉換。您應該將數據庫中的unix時間戳真正轉換爲DateTime或Date字段。

-1

您可以使用PHP DateTime類。

$today = new DateTime('now'); // Can be what ever you want, not only now 
           // see below for reference. 
$jobpostdate = $today->getTimestamp(); 

和查詢:

$sql = "SELECT jsp_title, jsp_subtitle, jsp_desc, jsp_location, jsp_date "; 
$sql .= "FROM js_projects WHERE jsp_date = '$jobpostdate' "; 

PS我無法測試它,但簡而言之它應該工作。關於這個真棒類

富勒更多的參考請到這裏: http://php.net/manual/en/class.datetime.php