2015-05-16 160 views
3

我有此格式在PHP日期:PHP/MySQL的比較日期

Fri May 01 2015 17:25:00 GMT +0100 (GMT Daylight Time) 

而且我試着去把它比作一個MySQL DATETIME場:

$date1 = DateTime::createFromFormat("Y-m-d H:i:s e+", $start); 
$sql = "SELECT * FROM ax_timestamps WHERE $date1 < datetimefeild ORDER BY id ASC"; 

但在執行時返回0的結果,即使基於輸入和數據庫中的元素,它應該得出結果。在datetimefeild費爾德數據的

例如:

2015-05-16 07:44:56 

日期被傳遞通過從jQuery的日期選擇器AJAX杆,它是設置這樣到PHP:

$("#datepicker").datepicker({ dateFormat: 'yy-mm-dd' }); 
var start = $.datepicker.parseDate("yy-mm-dd", $('#datepicker').val()); 
+0

確定的字段的名稱是'datetimefeild'而不是'datetimefield'? – axxis

回答

0

您正在傳遞的日期格式錯誤(以字符串形式)。您應該首先使用str_to_date()函數將它轉換爲where子句中的datetime類型。

例子:

SELECT str_to_date('2015-05-01 08:00:00', '%Y-%m-%d %h:%i:%s') 

運用它,你的$ SQL字符串將成爲:

$sql = "SELECT * FROM ax_timestamps WHERE datetimefeild < str_to_date('".$date1."', '%Y-%m-%d %h:%i:%s') ORDER BY id ASC"; 

編輯:這也適用:

$sql = "SELECT * FROM ax_timestamps WHERE datetimefeild < '".$date1."' ORDER BY id ASC"; 
+0

似乎沒有正常工作。它們都返回來自示例輸入的結果,但是當我放置日期晚於數據庫中的日期時,它仍然會在它不應該時返回它們。例如。 Fri May 31 2015 17:25:00 GMT +0100(GMT Daylight Time) – Lukesmith

+0

我仍然認爲你需要將你的日期時間轉換爲MYSQL的格式,這正如我上面提到的那樣。另一方面,我看到在你的例子中日期選擇器的另一個問題是使用缺少時間部分的「yy-mm-dd」。 – kayess

0

我認爲

Fri May 01 2015 17:25:00 GMT +0100 (GMT Daylight Time) 

不是有效的日期/時間格式。你需要有隻

Fri May 01 2015 17:25:00 GMT +0100 

這樣你就可以做到這一點

$date1 = new DateTime(substr($start, 0, -20)); 

$sql = "SELECT * FROM ax_timestamps WHERE {$date1->format('Y-m-d H:i:s')} < datetimefeild ORDER BY id ASC";