PHP日期列不会从csv文件填充

时间:2014-04-04 11:00:36

标签: php mysql csv

我试图将csv文件导入表格。当我运行查询时,date_altered列不能正确填充。

插入查询:

xtc_db_query("
        LOAD DATA INFILE '".$bpmand."'
        INTO TABLE bpmand_update
        FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'
        LINES TERMINATED BY '\r\n'
        (@skip, customers_id, @skip, @skip, date_altered, @skip)
        ");

其他信息 -

创建表:

$createtable = '    
        CREATE TABLE bpmand_update
        (
        orders_id int(11),
        customers_id int(11),
        bonuspoints_received int(11),
        bonuspoints_spent int(11),
        current_bonuspoints int(11),
        date_altered datetime,
        comment varchar(50));';
    xtc_db_query($createtable);

csv文件如下所示:

"1260","13-11-2013 11:45:45"
"5222","09-01-2014 11:45:45"

编辑: 如果我到phpmyadmin并运行

INSERT INTO bpmand_update (customers_id, date_altered) VALUES ("1260","13-11-2013 11:45:45")

一切都很好

2 个答案:

答案 0 :(得分:2)

SQL需要日期格式为YYYY-MM-DD HH:MM:SS,您需要DD-MM-YYYY HH:MM:SS。因此,您需要在this StackOverflow answer的行中修改SQL语句,如下所示:

    LOAD DATA INFILE '".$bpmand."'
    INTO TABLE bpmand_update
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'
    LINES TERMINATED BY '\r\n'
    (@skip, customers_id, @skip, @skip, @date, @skip)
    SET date_altered = STR_TO_DATE(@date,'%d-%m-%Y %H-%i-%s')

答案 1 :(得分:1)

在您的CSV文件中,datetime值的格式应为YYYY-MM-DD HH:MM:SS,而不是13-11-2013 11:45:45。因此,您需要将日期值转换为MySQL接受格式

DATETIME YYYY-MM-DD HH:MM:SS格式。

参考:https://dev.mysql.com/doc/refman/5.0/en/datetime.html