如何在mysql数据库中存储此日期字符串以允许按日期排序?

时间:2016-05-20 08:50:40

标签: php mysql sorting date datetime

使用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。

但我无法让它发挥作用,有人可以提出建议吗?

2 个答案:

答案 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