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

PostgreSQL中如何按employeeId与时间范围筛选timestamp类型数据

PostgreSQL日期范围查询语法修正

你的查询语句报错是因为**date(created_at) = between存在语法错误**——=运算符和BETWEEN关键字不能同时使用,这违反了PostgreSQL的语法规则。

以下是满足需求的几种正确写法:

写法1:使用BETWEEN(需注意时间边界)

如果要精确匹配包含2022-08-29 00:00:00到2022-08-31 23:59:59的所有时间戳:

SELECT *
FROM employee
WHERE employeeId = 3
  AND created_at BETWEEN '2022-08-29 00:00:00' AND '2022-08-31 23:59:59';

写法2:推荐的边界判断(避免时间精度问题)

这种写法更严谨,不会因为timestamp的毫秒级精度漏掉数据,同时如果created_at字段有索引,还能利用索引提升查询性能:

SELECT *
FROM employee
WHERE employeeId = 3
  AND created_at >= '2022-08-29'
  AND created_at < '2022-09-01';

写法3:使用date()函数转换(注意索引失效风险)

如果一定要将timestamp转换为日期后匹配,需去掉多余的=:

SELECT *
FROM employee
WHERE employeeId = 3
  AND date(created_at) BETWEEN '2022-08-29' AND '2022-08-31';

注意:这种写法会对created_at字段做函数转换,若该字段有索引则无法被使用,数据量大时查询效率会下降。

内容的提问来源于stack exchange,提问作者Danang Wahyu Nugroho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:24:47