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

MySQL查询DATETIME类型列时匹配不到对应行该如何解决?

问题原因与解决方法

核心错误原因

MySQL中DATETIME类型的标准字符串存储格式为YYYY-MM-DD HH:MM:SS,你在查询时使用的DD/MM/YYYY格式与标准格式不匹配,数据库无法正确解析为对应的时间值,因此返回空结果。

三个查询的具体问题

  • 第一个查询SELECT * FROM tb_cyc WHERE mDTS = '12/08/2021 10:42:34':输入的日期格式不符合DATETIME标准格式,数据库会将其解析为无效的时间值,无法匹配到已有数据。
  • 第二个查询SELECT * FROM tb_cyc WHERE mDTS LIKE '12/08/2021 10:42:34':用LIKE匹配DATETIME字段时,MySQL会先将mDTS转为YYYY-MM-DD HH:MM:SS格式的字符串,再和你输入的DD/MM/YYYY格式字符串匹配,二者格式完全不同,自然无结果。
  • 第三个查询SELECT * FROM tb_cyc WHERE mDTS = '12/08/2021 %':首先通配符%只有和LIKE搭配才生效,等于号无法识别通配符;其次即使替换为LIKE,还是存在日期格式不匹配的问题,依旧查不到结果。

正确查询方案

方案1(最推荐,性能最优):直接使用标准格式查询

将查询的日期转为YYYY-MM-DD HH:MM:SS格式即可,示例:

SELECT * FROM tb_cyc WHERE mDTS = '2021-08-12 10:42:34';

如果需要查询2021年8月12日全天的所有数据,推荐用范围查询,可正常命中mDTS字段的索引:

SELECT * FROM tb_cyc WHERE mDTS >= '2021-08-12' AND mDTS < '2021-08-13';

方案2:转换输入的非标准日期格式

如果必须使用DD/MM/YYYY格式的输入,可以用STR_TO_DATE函数将输入字符串转换为DATETIME类型:

SELECT * FROM tb_cyc WHERE mDTS = STR_TO_DATE('12/08/2021 10:42:34', '%d/%m/%Y %H:%i:%s');

内容的提问来源于stack exchange,提问作者alessandro.todisco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:18:03