【发布时间】:2012-07-20 01:39:24
【问题描述】:
我有一个要导入 mysql 的 csv 文件,csv 文件中有一个日期字段,格式如下:30.09.2011
我有一个从数据库中提取数据的 php 页面,我想按日期字段对其进行排序。目前它将日期视为一个字符串并像这样排序..
30.09.2011 2012 年 2 月 6 日 7.10.2011 9.12.2008
谢谢!
【问题讨论】:
我有一个要导入 mysql 的 csv 文件,csv 文件中有一个日期字段,格式如下:30.09.2011
我有一个从数据库中提取数据的 php 页面,我想按日期字段对其进行排序。目前它将日期视为一个字符串并像这样排序..
30.09.2011 2012 年 2 月 6 日 7.10.2011 9.12.2008
谢谢!
【问题讨论】:
不要为此使用 PHP。从源头上纠正它。即在数据类型为DATE的MySQL表中新增一列。
然后您可以在导入后使用STR_TO_DATE() 填充它。
UPDATE your_table SET new_date_column = STR_TO_DATE(old_str_column,'%d.%m.%Y');
这样做将使将来的排序、计算、格式化等更容易。
【讨论】:
如果您定期提取 CSV 中的数据,为什么不直接修改提取 SQL 以便以正确的格式输出日期以供 MySQL 吸收?
例如,如果你是从 oracle 中提取,你可以改变
select
yourDateColumn
from
yourTable
到
select
to_char(yourDateColumn, 'YYYY-MM-DD') as yourMySQLDateColumn
from
yourTable
然后您可以直接导入 Mysql 中的日期数据类型,但您也可以跳过整个 PHP 上传并直接转到 MySQL Load Data Infile 命令,这将比 PHP 执行的任何操作都快一个 STACK。
【讨论】: