Oracle SQL 関数 : EXTRACT : 日時フィールドを返す
datetimeRet := EXTRACT( [YEAR,MONTH,DAY,HOUR,MINUTE,SECOND] FROM exp1 ); EXTRACTはexp1の指定された日時フィールドを返します。
SQL> SELECT 2 EXTRACT(YEAR FROM TO_DATE('2004/10/20')) AS YEAR 3 ,EXTRACT(MONTH FROM TO_DATE('2004/10/20')) AS MONTH 4 ,EXTRACT(DAY FROM TO_DATE('2004/10/20')) AS DAY 5 ,TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS') AS SYSTEM_DATE 6 ,EXTRACT(HOUR FROM TO_TIMESTAMP(TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS'))) AS HOUR 7 ,EXTRACT(MINUTE FROM TO_TIMESTAMP(TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS'))) AS MINUTE 8 ,EXTRACT(SECOND FROM TO_TIMESTAMP(TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS'))) AS SECOND 9 FROM DUAL; YEAR MONTH DAY SYSTEM_DATE HOUR MINUTE SECOND ---------- ---------- ---------- ------------------- ---------- ---------- ---------- 2004 10 20 2004/10/20 11:59:07 11 59 7
上記のSQLでは2~4行では年,月,日の値をそれぞれ返し、6~8行では時,分,秒を返します。
6~8のTIMESTAP型データをDATE型に変更するとエラーが発生します。
時,分,秒を取得するにはTIMESTAP型データでなければならない様です。