我正在尝试将一个csv文件加载到我的数据库中,并且需要调用一个将日期字符串(当前为dd-mmm-yyyy格式)转换为yyyy / mm / dd格式的函数。 / p>
我已经尝试过了,但是不起作用:
SELECT STR_TO_DATE("10-Aug-2017", "%M %d %Y");
答案 0 :(得分:1)
对于mysql,您可以使用str_to_date()在日期中转换字符串
select str_to_date('23-08-2018', 'd%-m%-%Y')
from dual
那么您就拥有一个正确的日期值
,您可以使用日期格式显示日期值
select date_format( my_col_date, '%Y/%m/%d')
from dual
select date_format(str_to_date('23-08-2018', 'd%-m%-%Y'), '%Y/%m/%d')
from dual
以您的情况
select date_format(STR_TO_DATE("12-Aug-2017", "%d-%b-%Y"), '%Y/%m/%d')
from dual
请参阅此参考以获取掩码参数https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format
假设您的插入表包含col1,col2,col3,.... col4 和col1 si列用于日期值 对于加载文件,您应该将日期转换为
LOAD DATA INFILE '/path/to/your_file.csv'
IGNORE INTO TABLE temp_test
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n' #use '\n' for linux
IGNORE 1 LINES
(@var_col1, col2, col3, ......, coln)
SET col1 = STR_TO_DATE(@var_col1,'%d-%m-%Y');
答案 1 :(得分:0)
抱歉,我误解了该功能。现在正在工作:
SELECT STR_TO_DATE("12-Aug-2017", "%d-%b-%Y");
返回2017-08-12