我正在尝试转换一个大表格,其中包含日期格式的日期 - 月份缩写 - 连续年份用短划线分隔,例如01-Jan-2014
。我找到的最接近的问题是this one,其中提问者最终做了搜索和替换方法。我也可以这样做,但我认为肯定有更好的方法。我的代码:
SELECT STR_TO_DATE(datecolumn, '%c/%d/%Y') FROM 'Table'
返回null,其中包含上述格式的日期,但其他日期格式则可以。我还尝试了DATE_FUNCTION
以及我在网上看到的其他建议。
答案 0 :(得分:0)
这样做:
SELECT
DATE_FORMAT(
STR_TO_DATE(
REPLACE(
SUBSTRING_INDEX(datecolumn,'-',-2),
'-',
CONCAT(' ', SUBSTRING_INDEX(datecolumn, '-', 1), ', ')
),
'%M %d, %Y'
),
'%Y-%m-%d'
)
FROM `Table`;
说明:
SUBSTRING_INDEX(datecolumn,'-',-2)
来获取最后两个部分,例如Jan-2014
-
中的Jan-2014
替换为第一部分(使用SUBSTRING_INDEX
),即01
,但也使用CONCAT
添加空格和,
,我们得到Jan 01, 2014
STR_TO_DATE
并告诉它格式为%M %d, %Y
%Y-%m-%d
格式与DATE_FORMAT()
示例:
07-Jan-2014 -> 2014-01-07
9-May-2001 -> 2001-05-09
13-Dec-1978 -> 1978-12-13