2015-05-16 243 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";