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

PostgreSQL使用current_date过滤数据时出现运算符不匹配错误求助

问题原因及解决方法

核心原因

你的"pld.PlanDate"字段类型是text(字符串),并非date类型:

  • 第二个查询中,Between '2023-04-01' AND '2023-04-11'两边都是字符串,PostgreSQL可直接执行字符串比较,因此能正常运行。
  • 第一个查询中,current_date是date类型,PostgreSQL无法直接对text和date类型执行<=/>=比较(Between逻辑的底层操作),所以抛出operator does not exist: text <= date错误。

解决办法

有两种可行方案:

  1. 显式转换字段为date类型:将"pld.PlanDate"转换成date类型后再做比较,这是更稳妥的方案,能避免字符串日期格式不一致导致的比较错误
SELECT "pld.PlanDate" 
FROM salesdespatch.sld_cube_salesdespatchdetailshop
WHERE CAST("pld.PlanDate" AS DATE) Between '2023-04-01' AND current_date;

也可以用PostgreSQL简化类型转换写法:

SELECT "pld.PlanDate" 
FROM salesdespatch.sld_cube_salesdespatchdetailshop
WHERE "pld.PlanDate"::DATE Between '2023-04-01' AND current_date;
  1. 转换current_date为字符串:把date类型的current_date转为和字段格式一致的字符串
SELECT "pld.PlanDate" 
FROM salesdespatch.sld_cube_salesdespatchdetailshop
WHERE "pld.PlanDate" Between '2023-04-01' AND TO_CHAR(current_date, 'YYYY-MM-DD');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:32:11