我有一个列有' char'具有两个格式记录的数据类型,如
my_char_column
2030-05-12
2/8/2017
2012-12-13
问题我想将类型数据更改为' date'用' Y-m-d'像这样的格式,
my_char_column_new
2030-05-12
2017-08-02
2012-12-13
我试图使用此查询但不起作用
UPDATE my_table SET my_char_column = DATE_FORMAT(my_char_column,'%Y-%m-%d') where my_char_column LIKE'%/%'
答案 0 :(得分:2)
这是一个类似的答案: https://stackoverflow.com/a/12734990/8364246
这是我的方式: 你需要的是某种条件检查,可以选择两种可能性,IFNULL将用于此目的。 DATE_FORMAT(STR_TO_DATE(my_char_column,'%Y-%m-%d')此转换“2030-05-12”这种类型的日期,而DATE_FORMAT(STR_TO_column,'%d /%m /%Y')将将“2/8/2017”此类日期转换为您想要的格式,即%Y-%m-%d。
select IFNULL(DATE_FORMAT(STR_TO_DATE(my_char_column, '%Y-%m-%d'), '%Y-%m-%d'), DATE_FORMAT(STR_TO_DATE(my_char_column, '%d/%m/%Y'), '%Y-%m-%d')) from your_table;