我有一个表格,其中日期列(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
由于
答案 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)