如何在MySQL中将Fri Jan 10 00:00:00 UTC 1992格式日期转为YYYY-MM-DD
问题原因
DATE_FORMAT() 函数仅支持将MySQL原生的日期/时间类型值格式化为字符串,你传入的 Fri Jan 10 00:00:00 UTC 1992 是非标准格式的字符串,MySQL无法直接识别为合法日期类型,因此返回NULL。
正确实现方案
你需要先通过 STR_TO_DATE() 函数将原始字符串解析为MySQL支持的日期类型,再用 DATE_FORMAT() 转换为目标格式:
- 解析原始字符串的格式符对应关系:
- 星期缩写:
%a - 月份缩写:
%b - 日期:
%d - 时分秒格式:
%T - 固定时区字符串:直接写
UTC匹配 - 4位年份:
%Y
- 星期缩写:
- 代码示例
- 若要输出标准
年-月-日格式(对应示例原始日期输出为1992-01-10):SELECT DATE_FORMAT(STR_TO_DATE(你的字段名, '%a %b %d %T UTC %Y'), '%Y-%m-%d') AS 转换后日期 FROM 你的表名; - 若要输出你提到的
年-日-月格式(对应示例原始日期输出为1992-10-01):SELECT DATE_FORMAT(STR_TO_DATE(你的字段名, '%a %b %d %T UTC %Y'), '%Y-%d-%m') AS 转换后日期 FROM 你的表名;
- 若要输出标准
注意事项
以上写法仅适用于原始字符串时区固定为UTC的场景,若时区不固定,需要先预处理掉时区部分再做解析。
内容的提问来源于stack exchange,提问作者Arif Nurdiansyah
相关产品推荐
相关产品推荐

