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

时间:2009-07-13 14:16:55

标签: sql oracle date

我需要将当前年份添加为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 个答案:

答案 0 :(得分:98)

使用to_char:

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

答案 1 :(得分:60)

另一种选择是:

SELECT *
  FROM TABLE
 WHERE EXTRACT( YEAR FROM date_field) = EXTRACT(YEAR FROM sysdate) 

答案 2 :(得分:15)

使用extract(datetime)功能它非常简单。

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

示例:

select extract(year from sysdate) from dual;

答案 3 :(得分:1)

另一种选择是:

SELECT * FROM mytable
 WHERE TRUNC(mydate, 'YEAR') = TRUNC(SYSDATE, 'YEAR');

答案 4 :(得分:1)

由于我们正在做这件事 - 你不必指定一年:

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

然而,如果您想要指定当前年份内的所有日期值,FerranB接受的答案会更有意义。

答案 5 :(得分:-5)

在oracle-sql中显示当前系统日期

   select sysdate from dual;