从 Oracle 中的计算日期字段中提取日期 SQL

Extracting Day From a Calculated Date Field in Oracle SQL

我正在尝试从计算字段(案例陈述)中提取日期,但我将 运行 保留在问题中。任何建议表示赞赏。

SELECT 
EXTRACT(DAY FROM (
CASE
 WHEN TYP IN ('Swap')
 THEN LEAST(TRD_DT, VAL_DT)
 ELSE LEAST(EFF_DT, VAL_DT)))
END AS ISS_DT
FROM HA

除了解决明显的括号不匹配问题外,还可以通过几种方式简化查询。完整的 CASE 表达式不需要放在括号中(尽管使用它们可能对某些读者有所帮助)。在任何情况下,由于 LEAST 的第二个参数在两种情况下都相同,因此可以进一步简化计算。我会这样写代码片段:

select extract(day from
          least(case when typ in ('Swap') then trd_dt else eff_dt end, val_dt)
       ) as iss_day
from   ha

我使用 ISS_DAY 作为列名而不是 ISS_DT,因为您实际上只有日期,而不是日期。