我使用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
答案 0 :(得分:1)
MySQL 4.x
LOAD DATA
会尝试按原样插入您的日期。它不知道格式,通常情况下你不能对你的字段应用一些后处理(好吧,不同于LOAD DATA
语法本身允许的某些格式) - 你不能通过以下方式调整你的值SET
MySQL 5.x
关键字
相反,您可以执行以下步骤:
VARCHAR
。将其命名为record_date
LOAD DATA
查询。它会将您的日期加载到record_date
列temp_date
- 类型为DATE
:ALTER 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')