How do I get the current year using SQL on Oracle?

前端 未结 6 2255
清酒与你
清酒与你 2020-12-04 14:21

I need to add the current year as a variable in an SQL statement, how can I retrieve the current year using SQL?

i.e.

  BETWEEN 
    TO_DATE(\'01/01/**         


        
相关标签:
6条回答
  • 2020-12-04 14:37

    Since we are doing this one to death - you don't have to specify a year:

    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');
    

    However the accepted answer by FerranB makes more sense if you want to specify all date values that fall within the current year.

    0 讨论(0)
  • 2020-12-04 14:41

    Use extract(datetime) function it's so easy, simple.

    It returns year, month, day, minute, second

    Example:

    select extract(year from sysdate) from dual;
    
    0 讨论(0)
  • 2020-12-04 14:43

    Using to_char:

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

    In your example you can use something like:

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

    The comparison values are exactly what you request:

    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
    
    0 讨论(0)
  • 2020-12-04 14:54

    Yet another option would be:

    SELECT * FROM mytable
     WHERE TRUNC(mydate, 'YEAR') = TRUNC(SYSDATE, 'YEAR');
    
    0 讨论(0)
  • 2020-12-04 14:56

    Another option is:

    SELECT *
      FROM TABLE
     WHERE EXTRACT( YEAR FROM date_field) = EXTRACT(YEAR FROM sysdate) 
    
    0 讨论(0)
  • 2020-12-04 14:56

    To display the current system date in oracle-sql

       select sysdate from dual;
    
    0 讨论(0)
提交回复
热议问题