代码之家  ›  专栏  ›  技术社区  ›  Craig Angus karan

如何在Oracle上使用SQL获取当前年份?

  •  55
  • Craig Angus karan  · 技术社区  · 16 年前

    我需要在SQL语句中添加当前年份作为变量,如何使用SQL检索当前年份?

      BETWEEN 
        TO_DATE('01/01/**currentYear** 00:00:00', 'DD/MM/YYYY HH24:MI:SS')
        AND
        TO_DATE('31/12/**currentYear** 23:59:59', 'DD/MM/YYYY HH24:MI:SS')
    
    6 回复  |  直到 7 年前
        1
  •  93
  •   Benjamin Crane FerranB    7 年前

    使用TothChar:

    select to_char(sysdate, 'YYYY') from dual;
    

    在您的示例中,可以使用如下内容:

    BETWEEN trunc(sysdate, 'YEAR') 
        AND add_months(trunc(sysdate, 'YEAR'), 12)-1/24/60/60;
    

    比较值完全符合您的要求:

    select trunc(sysdate, 'YEAR') begin_year
         , add_months(trunc(sysdate, 'YEAR'), 12)-1/24/60/60 last_second_year
    from dual;
    
    BEGIN_YEAR  LAST_SECOND_YEAR
    ----------- ----------------
    01/01/2009  31/12/2009
    
        2
  •  57
  •   borjab    16 年前

    另一个选择是:

    SELECT *
      FROM TABLE
     WHERE EXTRACT( YEAR FROM date_field) = EXTRACT(YEAR FROM sysdate) 
    
        3
  •  15
  •   Sathyajith Bhat ron tornambe    13 年前

    使用 extract(datetime) 功能很简单。

    它返回年、月、日、分、秒

    例子:

    select extract(year from sysdate) from dual;
    
        4
  •  1
  •   David Faber    8 年前

    另一个选择是:

    SELECT * FROM mytable
     WHERE TRUNC(mydate, 'YEAR') = TRUNC(SYSDATE, 'YEAR');
    
        5
  •  1
  •   William Robertson    7 年前

    既然我们要把这件事搞得一团糟,你不必指定年份:

    select * from demo
    where  somedate between to_date('01/01 00:00:00', 'DD/MM HH24:MI:SS')
                    and     to_date('31/12 23:59:59', 'DD/MM HH24:MI:SS');
    

    但是,如果您想指定当前年份内的所有日期值,那么费兰布接受的答案就更有意义了。

        6
  •  -5
  •   zoranc Smeegs    11 年前

    在Oracle SQL中显示当前系统日期

       select sysdate from dual;