原因分析:
时间精度截断:
MySQL的 DATETIME 类型最高支持微秒精度(6位小数),而您提供的时间戳有9位小数(纳秒级)。
当值被插入或查询时,超出的精度会被四舍五入(MySQL 5.6.4+)或直接截断(旧版本)。
四舍五入导致日期进位:
-- 您的原始时间:
2024-09-30 23:59:59.999999999
--MySQL实际处理(假设四舍五入):
2024-09-30 23:59:59.999999999 → 2024-10-01 00:00:00.000000
解决方案:
显式指定精度:
sql
SELECT CAST('2024-09-30 23:59:59.999999' AS DATETIME(6)); -- 保留微秒级
使用字符串比较(避免自动转换):
sql
WHERE created_time < '2024-09-30 23:59:59.999999'
调整查询逻辑:
sql
-- 查询10月1日之前的所有数据(包含边界)
WHERE created_time < '2024-10-01 00:00:00'
















