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

MySQL运行查询时报#1292 Incorrect date time value错误如何解决?

问题解决方法

报错根因

date_field字段存储的是整型Unix时间戳,MySQL的DATE()函数仅支持DATE/DATETIME类型的合法日期值作为入参,直接传入整型时间戳会触发类型不匹配报错,该问题和sql_mode配置没有直接关联。

可用解决方案

方案1:转换时间戳为日期格式后筛选

先通过FROM_UNIXTIME()函数将Unix时间戳转换为合法的日期时间格式,再用DATE()函数做日期判断,写法如下:

SELECT * 
FROM `tblletter` 
WHERE DATE(FROM_UNIXTIME(date_field)) BETWEEN '2021-09-10' AND '2021-09-15'

方案2:转换查询日期为时间戳后筛选(性能更优)

将需要匹配的起止日期转换为Unix时间戳,直接和date_field的整型值比较,不需要对每行数据的字段做函数计算,可利用date_field字段的索引提升查询效率:

SELECT * 
FROM `tblletter` 
WHERE date_field BETWEEN UNIX_TIMESTAMP('2021-09-10 00:00:00') AND UNIX_TIMESTAMP('2021-09-15 23:59:59')

如果要避免处理23:59:59的边界问题,也可以改写为半开区间写法:

SELECT * 
FROM `tblletter` 
WHERE date_field >= UNIX_TIMESTAMP('2021-09-10') 
AND date_field < UNIX_TIMESTAMP('2021-09-16')

该写法同样覆盖2021-09-10到2021-09-15的全部数据,不会出现日期边界遗漏问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:45:00