2016-10-13 77 views
0

数据库风味的日期范围:在PostgreSQL 9.5从表中选择日期基于另一个表

我试图让我的头周围越来越table1中的日期,因为他们位于debtors.debt_date场即日期的日期范围之间(-3,并在debtors.debt_date字段给定日期的+ 4天)

查询1给我:

ERROR: more than one row returned by a subquery used as an expression (which is no surprise)

select table1.sale_date 
from sales table1 where 
table1.sale_date between 
    (select debt_date::date -3 from debtors) 
and (select debt_date::date +4 from debtors); 

查询2个不返回行(我认为在哪里最初的where子句正在寻找绝对值)

select table1.sale_date 
from sales table1 where 
table1.sale_date in ( 
    (select debt_date::date from debtors where debt_date between 
    debt_date::date - 3 and debt_date::date + 4); 
+0

无关,但:什么样的数据类型是'debt_date'?你为什么要约会? –

+0

@a_horse_with_no_name债务日期类型是'没有时区的时间戳',我想要做的是减去3并从debtors.date_paid添加4天,因为我对销售表中的日期感兴趣在债务人表中。 – ribbit

+0

可能是:'...从销售人员加入债务人(s.da_date在d.debt_date - '3 day':: interval和d.debt_date +'4 day':: interval)'之间'。对不起,这不是关于表/列名那么清晰...... – Abelisto

回答

0

这是你正在尝试做什么?

select table1.sale_date 
from sales table1 
where table1.sale_date between debt_date::date -3 AND debt_date::date +4 
+0

谢谢,但它更像是 '销售表1 其中table1.sale_date选择table1.sale_date 债务人.debt_date :: date -3和debtors.debt_date :: date + 4' – ribbit

+0

之间我不明白,debt_date :: date是一列还是一个参数? – sagi

+0

'从债务人限额1选择债务_日期; (时间戳没有时区没有铸造) debt_date --------------------- 2013-05-13 00:00:00 pgdb =#select debt_date ::来自债务人的日期限制1; (只投日期,我对时间不感兴趣) debt_date ------------ 2013-05-13 (1 row) pgdb =#select debt_date :: date来自债务人的+4限制1; (为我的目的投射日期和加/减) ?列? ------------ 2013-05-17 (1 row)' – ribbit

相关问题