>我有一个表格,其中日期列(会话结束)值如下所示:
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
谢谢
最好的解决方案是将日期时间格式转换为本机格式。
将新的字段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
上的任何索引,并循环访问表中的所有记录。
使用 strtotime() 和 date():
$originalDate = "Sep 10, 2013 2:33 AM";
$newDate = date("Y-m-d H:i:s", strtotime($originalDate));
您可以使用
strtotime()将时间彼此分开:这将转换为Unix时间戳
但是如果你想把它变成一个日期,请使用日期('Y-m-d H:i:s',$variable)