使用PHP我会通过XML提取一些数据记录,而Date字段是一个字符串,格式如下:
2016年5月19日星期四22:58:58 +0900(JST)
当我在VARCHAR列中将此Date保存到MySQL表时,我无法正确排序日期。它按字母顺序对字符串进行排序,以便以“Fri”开头的所有日期都排在第一位,无论DD / MM / YYYY值如何。
所以我认为我需要: - 更改我的表结构,以便Date字段是TIMESTAMP或DATETIME而不是VARCHAR - 使用PHP strtotime()或类似函数将字符串转换为TIMESTAMP。
但我无法让它发挥作用,有人可以提出建议吗?
答案 0 :(得分:0)
您应该以这种格式保存。这可能会对你有所帮助。
$sortable_date = date('Y-m-d H:i:s D',strtotime($your_date))." + 0900 (JST)";
答案 1 :(得分:0)
是的,您应该将数据库转换为使用DateTime列,这就是将这些日期转换为将存储到DateTime列中的格式的方法
<?php
$in = 'Thu, 19 May 2016 22:58:58 +0900 (JST)';
$date = DateTime::createFromFormat('D, d M Y H:i:s P e', $in);
echo $date->format('Y-m-d H:i:s').PHP_EOL;
结果=
2016-05-19 22:58:58