mysql插入的格式化日期

时间:2014-01-27 07:05:18

标签: mysql sql date

我使用LOAD DATA INFILE导入csv文件,文件日期格式为29/11/2010,数据库格式为2010-11-29,我可以用什么格式化查询中的日期?

我已经尝试过str_to_date:

SET date_start = STR_TO_DATE(@from_date,'%Y-%m-%d'),

但只插入0000-00-00

3 个答案:

答案 0 :(得分:1)

MySQL 4.x

LOAD DATA会尝试按原样插入您的日期。它不知道格式,通常情况下你不能对你的字段应用一些后处理(好吧,不同于LOAD DATA语法本身允许的某些格式) - 你不能通过以下方式调整你的值SET

中的MySQL 5.x关键字

相反,您可以执行以下步骤:

  • 将您的表格列声明为VARCHAR。将其命名为record_date
  • 执行LOAD DATA查询。它会将您的日期加载到record_date
  • 在表格中添加新列,将其设为temp_date - 类型为DATEALTER TABLE t ADD temp_date DATE
  • 更新您的temp_date列:UPDATE t SET temp_date = STR_TO_DATE(record_date, '%d/%m/%Y')
  • 删除VARCHAR日期列:ALTER TABLE t DROP record_date
  • 最后,将具有正确DATE类型的列重命名为原始列:ALTER TABLE t CHANGE temp_date record_date DATE

结果,您将日期作为DATE日期类型加载到表中。将record_date替换为原始列的名称。

MySQL 5.x

您可以使用SET关键字并原生替换上述过程。所以就这样做:

LOAD DATA INFILE 'file.csv'
INTO TABLE t
(@date)
SET record_date=STR_TO_DATE(@date, '%d/%m/%Y')

- 上面的示例适用于一列,您需要添加其他列(如果存在)。日期列名称也是record_date - 因此也将其更改为实际名称。

答案 1 :(得分:0)

尝试类似

的内容
update tablename SET date_start = date_format(@from_date,'%Y-%m-%d')

答案 2 :(得分:0)

使用DATE_FORMAT()。它将根据格式字符串格式化日期值。 Mysql

date_format(@from_date,'%Y-%m-%d')