我必须从距今早 2 周的 Oracle 数据库中获取数据。
它是一个复杂的查询,我在 where 子句中有这个条件。
我尝试使用之间。但徒劳无功。我确信我在计算两者之间犯了一些愚蠢的错误。
to_date(to_char(sysdate,'yyyy') || to_char(sgs.status_Date,'mmdd'),'yyyymmdd' )
between (trunc(sysdate)) and trunc(sysdate) - 14
任何帮助将不胜感激。
我必须从距今早 2 周的 Oracle 数据库中获取数据。
它是一个复杂的查询,我在 where 子句中有这个条件。
我尝试使用之间。但徒劳无功。我确信我在计算两者之间犯了一些愚蠢的错误。
to_date(to_char(sysdate,'yyyy') || to_char(sgs.status_Date,'mmdd'),'yyyymmdd' )
between (trunc(sysdate)) and trunc(sysdate) - 14
任何帮助将不胜感激。
正如@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
必须同时在今天之后和两周前之前。
您应该尽快更改 BETWEEN 日期 sysdate-14 < sysdate 并且应该是第一个
to_date(to_char(sysdate,'yyyy') || to_char(sgs.status_Date,'mmdd'),'yyyymmdd' )
between (trunc(sysdate) - 14) and (trunc(sysdate))