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

Php 如何在mysql数据库中存储此日期字符串以允许按日期排序?,php,mysql,sorting,date,datetime,Php,Mysql,Sorting,Date,Datetime,使用PHP,我通过XML提取一些数据记录,日期字段是以下格式的字符串: 2016年5月19日星期四22:58:58+0900(JST) 在VARCHAR列中将此日期保存到MySQL表时,无法正确地按日期排序。它按字母顺序对字符串进行排序,以便所有以“Fri”开头的日期都排在第一位,而不考虑DD/MM/YYYY值 所以我想我需要: -更改我的表结构,使日期字段是时间戳或日期时间,而不是VARCHAR。 -使用PHP strotime()或类似函数将字符串转换为时间戳 但是我不能让它工作,有人能建议

使用PHP,我通过XML提取一些数据记录,日期字段是以下格式的字符串:

2016年5月19日星期四22:58:58+0900(JST)

在VARCHAR列中将此日期保存到MySQL表时,无法正确地按日期排序。它按字母顺序对字符串进行排序,以便所有以“Fri”开头的日期都排在第一位,而不考虑DD/MM/YYYY值

所以我想我需要: -更改我的表结构,使日期字段是时间戳或日期时间,而不是VARCHAR。
-使用PHP strotime()或类似函数将字符串转换为时间戳


但是我不能让它工作,有人能建议吗?

你应该用这种格式保存。这可能对你有帮助

$sortable_date = date('Y-m-d H:i:s D',strtotime($your_date))." + 0900 (JST)";

您应该选择以这种格式保存。这可能对你有帮助

$sortable_date = date('Y-m-d H:i:s D',strtotime($your_date))." + 0900 (JST)";

是的,您应该将数据库转换为使用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;

是的,您应该将数据库转换为使用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;