以错误的格式在两个日期字段之间搜索

时间:2013-10-15 21:37:18

标签: php mysql datetime

我有一个表格,其中日期列(sessionend)的值如下所示:

Sep 10, 2013 2:33 AM

以下是我的用户输入日期:

$convertedStart = '2013-08-01 00:00:01';
$convertedEnd = '2013-10-15 23:59:59';

这是我的查询

"SELECT * FROM `tictoc` WHERE sessionend BETWEEN '".$convertedStart."' AND '".$convertedEnd."'"

如何转换来自数据库的时间,以便我可以使用以下格式进行搜索:

yyy-mm-dd 00:00:00

由于

3 个答案:

答案 0 :(得分:4)

最佳解决方案是将日期时间格式转换为原生格式。

将新字段new_field添加到表格DATETIME类型。然后运行查询:

UPDATE `tictoc`
SET `new_field` = STR_TO_DATE(`sessionend`, '%b %e, %Y %l:%i %p');

然后删除旧字段sessionend,并将字段new_field重命名为sessionend


你仍然可以像这样运行查询:

SELECT * 
FROM `tictoc` 
WHERE STR_TO_DATE(`sessionend`, '%b %e, %Y %l:%i %p') BETWEEN '$convertedStart' AND '$convertedEnd'

但这将忽略字段sessionend上的所有索引,并循环遍历表中的所有记录。

答案 1 :(得分:0)

使用strtotime()和date():

$originalDate = "Sep 10, 2013 2:33 AM";
$newDate = date("Y-m-d H:i:s", strtotime($originalDate));

答案 2 :(得分:0)

使用strtotime()可以相隔一段时间:这会转换为unix时间戳

但如果你想把它变成日期,请使用日期('Y-m-d H:i:s',$ variable)