2

我必须从距今早 2 周的 Oracle 数据库中获取数据。

它是一个复杂的查询,我在 where 子句中有这个条件。

我尝试使用之间。但徒劳无功。我确信我在计算两者之间犯了一些愚蠢的错误。

to_date(to_char(sysdate,'yyyy') || to_char(sgs.status_Date,'mmdd'),'yyyymmdd' )
    between (trunc(sysdate)) and trunc(sysdate) - 14

任何帮助将不胜感激。

4

2 回答 2

1

正如@valex 所说,您需要交换表达式的顺序。正如该条件的文档所述BETWEEN

... 的价值

expr1 BETWEEN expr2 AND expr3

是布尔表达式的值:

expr2 <= expr1 AND expr1 <= expr3

你的版本有

your_date between trunc(sysdate) and (trunc(sysdate) - 14)

这相当于

trunc(sysdate) <= your_date and your_date <= (trunc(sysdate) - 14)

......这永远不会是真的 -your_date必须同时今天之后和两周前之前。

于 2012-08-28T13:41:24.370 回答
1

您应该尽快更改 BETWEEN 日期 sysdate-14 < sysdate 并且应该是第一个

to_date(to_char(sysdate,'yyyy') || to_char(sgs.status_Date,'mmdd'),'yyyymmdd' ) 
between (trunc(sysdate) - 14) and (trunc(sysdate)) 
于 2012-08-28T13:25:16.390 回答