sql - 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'
,查询似乎工作正常。这很奇怪,因为两个子查询实际上都在吐出日期格式结果并且不知道它为什么给出这个结果。
解决方案
你不需要两个比较:
select *
from table
where to_date >= (select (max(to_date)::date - interval '6 months')::date as to_date
from table
) ;
这是假设表引用在内部和外部查询中是相同的。
推荐阅读
- ruby - Ruby TTY 提示未定义的变量或方法
- python - 我们得到一个错误列表'对象在交叉验证中没有属性'low in
- c# - 在 .aspx 页面中设置响应状态代码 500 返回自定义 html 但带有默认错误消息
- acumatica - PXSearch 和 PXSelector 的条件
- python - 如何动态保留此配置文件中的引号?
- ubuntu - 无法解决使用 MonoDevelop 运行项目的问题
- c# - System.Data.Entity.Infrastructure.DbUpdateConcurrencyException
- java - 如何在运行报告之前使用提供的参数评估表达式?
- c - 术语“格式说明符”是术语“转换说明符”的同义词吗?
- server - 为什么 PSAD 将我的云提供商的 DNS 服务器报告为端口扫描?