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

PostgreSQL中timestamp without time zone类型日期匹配的正确语法

正确的PostgreSQL日期查询语法(针对timestamp without time zone类型)

你的问题核心出在日期值没加单引号——PostgreSQL会把2017-01-12当成数学运算(2017减1减12,结果是2004),然后自动把这个整数转换成timestamp类型,得到的是1970年的某个时间点,自然查不到你要的2017年数据。

下面是几种适配不同需求的正确写法:

1. 匹配精确到2017-01-12 00:00:00的记录

如果你的date字段值刚好是当天零点,直接给日期加单引号就能匹配:

SELECT * FROM tabl WHERE date = '2017-01-12';

2. 匹配2017-01-12当天所有时间的记录(推荐)

如果字段里有2017-01-12 09:15:30这类带具体时间的记录,上面的语句就查不到了。推荐用范围查询(性能更优,能正常利用字段上的索引):

SELECT * FROM tabl WHERE date >= '2017-01-12' AND date < '2017-01-13';

也可以用DATE()函数提取日期部分来匹配,但这种写法可能会导致字段索引失效(因为函数会修改原始字段值),数据量大时不建议使用:

SELECT * FROM tabl WHERE DATE(date) = '2017-01-12';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:46:24