PHP / MYSQL比较日期

时间:2015-05-16 16:33:55

标签: php mysql database

我在php中的日期格式如下:

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 feild中的数据示例:

2015-05-16 07:44:56

日期通过jQuery datepicker的ajax帖子传递给php,其设置如下:

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

2 个答案:

答案 0 :(得分:0)

您传递的日期格式错误(作为字符串)。您应该首先使用str_to_date()函数将其转换为where子句中的datetime类型。

示例:

echo json_encode($rows, JSON_NUMERIC_CHECK);

应用它,您的$ sql字符串将变为:

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

编辑:这也有效:

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

答案 1 :(得分: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";