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

WHERE子句过滤'YYYY-MM-DD'格式日期失效?timestamp查询返回前一日数据原因

问题原因

核心是数据库对日期字符串的隐式类型转换逻辑导致的:

  • 你的start_time字段类型是timestamp without timezone,当你和字符串'2012-08-31'比较时,数据库会自动把该字符串转换为同类型的时间戳,转换后的值为2012-08-31 00:00:00。
  • 你写的查询条件start_time > '2012-08-31'实际等价于start_time > '2012-08-31 00:00:00',所有8月31日零点之后的记录都会命中条件,自然包含了8月31日全天的预约数据。
修复方案

调整查询条件即可,推荐两种写法:

  1. 直接指定9月的起始时间,最稳妥无精度问题:
select start_time from cd.bookings
where start_time >= '2012-09-01';
  1. 显式指定8月31日的最大时间(不推荐,极端场景下如果有亚秒级时间可能漏数据):
select start_time from cd.bookings
where start_time > '2012-08-31 23:59:59';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:06:00