MySQL DATE_FORMAT函数返回结果与输入时间差45分钟的原因排查
问题原因及解决方法
核心问题:日期格式符使用错误
你在date_format函数里误用了格式符:MySQL中%m代表两位数字的月份(01-12),而表示分钟的正确格式符是%i(00-59)。
为什么会返回相差45分钟的结果?
以返回的2022-02-18 09:47:53为例:
当执行date_format(css_regDate, '%Y-%m-%d %H:%m:%s')时,%m会提取该日期的月份(2月,对应02),所以格式化后的结果是2022-02-18 09:02:53,刚好和你的查询条件完全匹配,因此这条记录被筛选出来。
正确的查询语句
把格式符里的%m替换成%i即可:
select css_regDate from j2t_counsel_sms where date_format(css_regDate, '%Y-%m-%d %H:%i:%s') = '2022-02-18 09:02:53';
如果要更高效(避免对字段使用函数,利于索引生效),可以改成:
select css_regDate from j2t_counsel_sms where css_regDate = str_to_date('2022-02-18 09:02:53', '%Y-%m-%d %H:%i:%s');
内容的提问来源于stack exchange,提问作者min you
相关产品推荐
相关产品推荐

