web-dev-qa-db-ja.com

OracleでSQLを使用して現在の年を取得するにはどうすればよいですか?

現在の年をSQLステートメントの変数として追加する必要がありますが、SQLを使用して現在の年を取得するにはどうすればよいですか?

つまり.

 BETWEEN 
 TO_DATE('01/01 /**現在の年** 00:00:00 '、' DD/MM/YYYY HH24:MI:SS ')
 AND 
 TO_DATE('31/12 /**現在の年** 23:59:59 '、' DD/MM/YYYY HH24:MI:SS ')
57
Craig Angus

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
99
FerranB

別のオプションは次のとおりです。

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

extract(datetime)関数を使用してください。とても簡単で簡単です。

年、月、日、分、秒を返します

例:

select extract(year from sysdate) from dual;
15

これは死ぬまでやっているので、年を指定する必要はありません:

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が受け入れた回答の方が意味があります。

1

さらに別のオプションは次のとおりです。

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