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

SQL WHERE子句使用TIMESTAMP筛选2023年数据出错求助

问题原因

你当前的SQL只限定了日期的下限(2023-01-01),但没设置上限,所以所有2023年1月1日之后的记录都会被选中——包括2024年及以后的数据,这就是错误包含的原因。

修改方案

因为你的日期是YYYY-MM-DD格式的字符串存储,有两种简单有效的修改方式:

方式一:直接字符串匹配(推荐,性能更高)

利用日期字符串的格式特点,直接筛选以2023-开头的记录,不用转换日期类型:

SELECT id, name, performance, record_date
FROM records
WHERE record_date LIKE '2023-%'

方式二:日期函数精确范围限定

如果习惯用日期函数做判断,就同时设置起始和结束范围,避免超出2023年:

SELECT id, name, performance, record_date
FROM records
WHERE date_parse(record_date,'%Y-%m-%d') >= TIMESTAMP '2023-01-01 00:00:00'
  AND date_parse(record_date,'%Y-%m-%d') < TIMESTAMP '2024-01-01 00:00:00'

这里用< 2024-01-01而非<= 2023-12-31,能避免因日期时间精度(比如带时分秒的记录)导致的漏选或错选问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 03:52:10