如何将字符串中的月份名称转换为短月份

时间:2018-08-23 15:51:38

标签: mysql date

我正在尝试将一个csv文件加载到我的数据库中,并且需要调用一个将日期字符串(当前为dd-mmm-yyyy格式)转换为yyyy / mm / dd格式的函数。 / p>

我已经尝试过了,但是不起作用:

SELECT STR_TO_DATE("10-Aug-2017", "%M %d %Y");

2 个答案:

答案 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