当我使用下面的语句时,我只是将NULL
返回到应该返回值的位置,以及列值为空的未定义字段。
SELECT STR_TO_DATE(strdate, '%Y-%m-%d %H:%m:%s') from table
我的日期格式设置为2013-12-11 00:58:00
。
如果我选择all而不转换它(只是按原样显示VARCHAR),那么我得到了:
答案 0 :(得分:1)
分钟的正确代码为%i
而非%m
:
SELECT STR_TO_DATE(strdate, '%Y-%m-%d %H:%i:%s')
from (select '2013-12-11 00:58:00' as strdate) t
答案 1 :(得分:1)
罪魁祸首是'%Y-%m-%d %H:%m:%s'
- %m
无法忍受一个月和分钟。 IIRC %m
对他们来说是正确的月份,%i
就是你想要的那一分钟。
答案 2 :(得分:0)
如果从str中提取的日期,时间或日期时间值是非法的,STR_TO_DATE()将返回NULL并产生警告。
这意味着strdate
的值与'%Y-%m-%d %H:%m:%s'
的格式模式不匹配(另请注意,格式字符串需要遵循DATE_FORMAT in the manual下列出的相同设置和规则)