You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

str_to_date处理有效日期时返回NULL的问题排查

问题解决:MySQL日期转换返回NULL的原因及修复

核心问题

你收到的#1411警告正是导致转换失败返回NULL的直接原因。你的日期字符串是9/9/2024 12:00:00 AM,其中月份和日期为单数字格式,但你在str_to_date中使用的%m和%d格式符要求输入必须是两位数字(带前导零),格式不匹配导致解析失败,最终返回NULL。

修复方案

将格式符中的%m(强制两位月份)替换为%c(支持单/双位月份,无强制前导零),%d(强制两位日期)替换为%e(支持单/双位日期,无强制前导零)。修正后的查询如下:

SELECT `dateColumn`, 
       CASE 
         WHEN TRIM(`dateColumn`) = '' THEN NULL
         ELSE DATE_FORMAT(STR_TO_DATE(`dateColumn`, '%c/%e/%Y %h:%i:%s %P'), '%Y-%m-%d')
       END AS 'NEW DATE'
FROM `table` 
WHERE `EmailAddress` = 'myemail@yahoo.com';

补充说明

  • 新增TRIM()是为了处理可能存在的空白字符串(比如仅含空格的无效值),避免误判为非空值进行转换。
  • 把%H替换为%h是更严谨的写法:%h对应12小时制格式,搭配%P(AM/PM标识)能更准确解析12小时制的时间字符串。

内容的提问来源于stack exchange,提问作者John Beasley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 21:27:31