gpt4 book ai didi

sql - 在没有 DUAL 表的情况下使用 SYSDATE()

转载 作者:行者123 更新时间:2023-12-04 13:19:01 25 4
gpt4 key购买 nike

我很惊讶这个问题还没有被问到。我一定错过了一些非常明显的东西,我已经准备好接受所有的反对票和 3 秒的回答。

在 MSSQL 中,您可以调用 GETDATE() 而不必依赖于数据库表,但在 Oracle 中,SYSDATE 必须来自 DUAL。有没有办法在不通过 DUAL 的情况下获取 Oracle 中的当前日期?

编辑

显然,这与 SYSDATE 没有太大关系,但更多的是我对它的错误使用。请参阅以下 WHERE 子句:

WHERE (extract(YEAR from ORDER_DATE) = (case when extract(month from SYSDATE()) < 11 then extract(year from SYSDATE()) else extract(year from SYSDATE())+1 end)

以上是行不通的,从这里的答案来看,似乎不建议在其中添加 dual 。这里的最佳解决方案是什么?

最佳答案

避免在 sysdate 之后写 ()。

示例 - 在 WHERE 子句中使用您的 CASE(不使用 DUAL):

create table T ( dt date ) ;

insert into T ( dt ) values ( sysdate ) ;


-- just write SYSDATE, not SYSDATE()
select *
from T
where ( extract ( year from dt ) ) = (
case
when extract( month from sysdate ) < 11 then
extract( year from sysdate )
else
extract( year from sysdate ) + 1
end
) ;

-- output
DT
---------
23-MAY-19

DBfiddle

关于sql - 在没有 DUAL 表的情况下使用 SYSDATE(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56280099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com