8.9.4 EXTRACT
日時を示すデータの一部(年,月,日,時,分,または秒のどれか)を抽出します。
- 〈この項の構成〉
(1) 指定形式
スカラ関数EXTRACT::=EXTRACT(抽出部分 FROM 抽出元データ) 抽出部分::={YEAR|MONTH|DAY|HOUR|MINUTE|SECOND} 抽出元データ::=値式
(2) 指定形式の説明
- 抽出部分:
-
抽出元データのデータ抽出部分を指定します。次に示すどれかの値を指定してください。ただし,抽出元データに時刻を示すデータがない場合は,HOUR,MINUTE,およびSECONDは指定できません。
-
YEAR
抽出元データの年の部分を抽出する場合に指定します。実行結果の値の範囲は,1〜9,999になります。
-
MONTH
抽出元データの月の部分を抽出する場合に指定します。実行結果の値の範囲は,1〜12になります。
-
DAY
抽出元データの日の部分を抽出する場合に指定します。実行結果の値の範囲は,1〜31になります。
-
HOUR
抽出元データの時の部分を抽出する場合に指定します。実行結果の値の範囲は,0〜23になります。
-
MINUTE
抽出元データの分の部分を抽出する場合に指定します。実行結果の値の範囲は,0〜59になります。
-
SECOND
抽出元データの秒の部分を抽出する場合に指定します。実行結果の値の範囲は,抽出元データの小数秒精度によって次の表に示すとおりに変わります。
表8‒26 スカラ関数EXTRACTの実行結果の値の範囲(抽出部分にSECONDを指定した場合) 抽出元データの小数秒精度
実行結果の値の範囲
0
0〜59
3
0.000〜59.999
6
0.000000〜59.999999
9
0.000000000〜59.999999999
12
0.000000000000〜59.999999999999
-
- 抽出元データ:
-
抽出元のデータを指定します。
指定規則を次に示します。
-
抽出元データは,値式の形式で指定します。値式については,「7.21 値式」を参照してください。
-
抽出部分にYEAR,MONTH,またはDAYを指定した場合,抽出元データのデータ型は,DATE型,TIMESTAMP型,CHAR型,またはVARCHAR型のどれかにしてください。ただし,CHAR型またはVARCHAR型の場合は,日付を表す既定の入力表現,または時刻印を表す既定の入力表現の形式に従っている文字列定数だけを指定できます。既定の入力表現については,「6.3.3 既定の文字列表現」を参照してください。
-
抽出部分にHOUR,MINUTE,またはSECONDを指定した場合,抽出元データのデータ型は,TIME型,TIMESTAMP型,CHAR型,またはVARCHAR型のどれかにしてください。ただし,CHAR型またはVARCHAR型の場合は,時刻を表す既定の入力表現,または時刻印を表す既定の入力表現の形式に従っている文字列定数だけを指定できます。既定の入力表現については,「6.3.3 既定の文字列表現」を参照してください。
-
抽出元データには,?パラメタを単独で指定できません。
-
スカラ関数EXTRACTの実行結果の例を次に示します。
- (例)
-
DATE型のデータ(DATE'2012-03-15')の,年の部分のデータを抽出します。
EXTRACT(YEAR FROM DATE'2012-03-15') → 2012
(3) 規則
-
抽出部分にSECOND以外を指定した場合,実行結果のデータ型はINTEGER型になります。
-
抽出部分にSECONDを指定した場合,抽出元データの小数秒精度によって実行結果のデータ型が次の表に示すとおりに変わります。
表8‒27 スカラ関数EXTRACTの実行結果のデータ型(抽出部分にSECONDを指定した場合) 抽出元データの小数秒精度
実行結果のデータ型
0
INTEGER
3
DECIMAL(5,3)
6
DECIMAL(8,6)
9
DECIMAL(11,9)
12
DECIMAL(14,12)
-
実行結果の値は,非ナル値制約なし(ナル値を許す)となります。
-
抽出元データがナル値の場合,実行結果はナル値になります。
(4) 例題
- 例題1
-
表T1のC2列が2012年のデータを検索します。
SELECT "C1","C2" FROM "T1" WHERE EXTRACT(YEAR FROM "C2")=2012
- 例題2
-
表T1の行のうち,C2列が3月以外の行をすべて削除します。
DELETE FROM "T1" WHERE EXTRACT(MONTH FROM "C2")<>3