Php 如何在mysql数据库中存储此日期字符串以允许按日期排序?
使用PHP,我通过XML提取一些数据记录,日期字段是以下格式的字符串: 2016年5月19日星期四22:58:58+0900(JST) 在VARCHAR列中将此日期保存到MySQL表时,无法正确地按日期排序。它按字母顺序对字符串进行排序,以便所有以“Fri”开头的日期都排在第一位,而不考虑DD/MM/YYYY值 所以我想我需要: -更改我的表结构,使日期字段是时间戳或日期时间,而不是VARCHAR。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 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;