首页 > 解决方案 > Oracle SQL - 根据当前月份定义日期的年份元素

问题描述

我正在尝试根据以下语句在 SQL Developer 中创建一个视图:

SELECT * FROM ORDERS WHERE START_DATE > '01-JUL-2020'

如果当前月份在 7 月和 12 月之间,则日期的 year 元素需要设置为当前日期的年份,否则需要设置为上一年。

下面的语句返回所需的年份,但我不知道如何将它(或更好的替代方案)合并到上面的语句中:

select
    case
      when month(sysdate) > 6 then 
        year(sysdate)
      else
        year(sysdate)-1
    end year
  from dual

谢谢

标签: sqloracle

解决方案


Oracle 没有内置month函数,因此我假设这是您创建的用户定义函数。假设是这样,听起来你想要

where start_date > (case when month(sysdate) > 6
                         then trunc(sysdate,'yyyy') + interval '6' month
                         else trunc(sysdate,'yyyy') - interval '6' month
                      end)

推荐阅读