问题
在MySQL中将字符串转换为日期时,发现一日期转换代码无论怎样修改转换格式,输出总是为空,但另一同样格式的写法,却能正常转换,见下面的语句:
select str_to_date('2016.08.22 13:46:12', '%Y.%m.%d %h:%i:%s'); --输出空
select str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s'); --输出'2008-08-09 08:09:30'
分析
时间串中唯一不同的是,第一个语句超过了12时,第二个语句没有;时间格式串中,%h一般表示为12小时制,而H表示24小时制,因此,可能为24小时转换错误。
解决
将%h修改为%H后输出结果正常,即:
select str_to_date('2016.08.22 13:46:12', '%Y.%m.%d %H:%i:%s');