首页 > 解决方案 > Postgres 间隔在 where 子查询中不起作用

问题描述

我有以下代码:

Select * from table
where to_date <= ( select max(to_date)
                  FROM table)
  and to_date >= (select (max(to_date)::date - interval '6 months')::date as to_date
                  FROM table) 

基本上,我试图查看最大日期和过去 6 个月之间的所有结果,我尝试通过进行 2 个子查询来做到这一点。

我似乎得到了空值,但奇怪的是,如果添加常规日期

(select (max(to_date)::date - interval '6 months')::date

给出并粘贴为>='yyyy-mm-dd',查询似乎工作正常。这很奇怪,因为两个子查询实际上都在吐出日期格式结果并且不知道它为什么给出这个结果。

标签: sqlpostgresql

解决方案


你不需要两个比较:

select *
from table
where to_date >= (select (max(to_date)::date - interval '6 months')::date as to_date
                  from table
                 ) ;

这是假设表引用在内部和外部查询中是相同的。


推荐阅读