例: 日付を使用するクエリー
現在50歳を超えるすべての男性従業員をリストするためには、以下の文を入力することができます。
SELECT name, dob FROM employee WHERE CURRENT_DATE > ADD_MONTHS (dob, 12*50) AND sex = 'M' ;
システムは、以下のような結果を返します。
Name DOB --------- ---------- Russell S 1932-06-05 Carter J 1935-03-12 Inglis C 1938-03-07
システムから現在の日付を取得するために、式の中でCURRENT_DATEが使用されていることに注意する必要があります。
従業員Russellの生年月日から3ヶ月を投影するためには、以下のように入力します。
SELECT name, ADD_MONTHS (dob,3) FROM employee WHERE name = ’Russell S’ ;
システムは、以下のような結果を返します。
Name ADD_MONTHS(dob,3) --------- ----------------- Russell S 1932-09-05
3ヶ月というのは、具体的な日数ではありません。この場合、「3ヶ月」は92日です。
例: 日付を表わすための整数の使用
1938年3月7日から1942年8月25日の間に生まれた従業員をリストするためには、日付情報を以下のように指定することができます。
SELECT name, dob FROM employee WHERE dob BETWEEN 380307 AND DATE '1942-08-25' ORDER BY dob ;
この例で、1つ目の日付(380307)はyymmddを表わす整数です。dob列の値は、整数の値と比較するためにINTEGERに変換されます。2番目の日付は、優先使用の日付リテラル形式になっています。結果として、Employeeテーブルに指定された生年月日の情報が以下のように返されます。
Name DOB ---------- ----------- Inglis C Mar 07 1938 Peterson J Mar 27 1942
DOBの表示は、Personnel.Employee.DOBの形式によって設定されます。 FORMAT ' MMM DD YYYY '。
例: 日付形式の変更
上記の例で表示されたDATE形式を別の形式に変えるためには、SELECTを以下のように変更します。
SELECT name, dob (FORMAT '99-99-99') FROM employee WHERE dob BETWEEN 380307 AND DATE '1942-08-25' ORDER BY dob ;
この形式指定によって、表示が以下のように変わります。
Name DOB ---------- -------- Inglis C 38-03-07 Peterson J 42-03-27
例: 日付形式から整数形式への変更
表示をDATE形式から整数形式に変えるためには、例3の文を以下のように変更します。
SELECT name, dob (INTEGER) FROM employee WHERE dob BETWEEN 380307 AND 420825 ORDER BY dob ;
この形式指定によって、表示が以下のように変わります。
Name DOB ---------- ----------- Inglis C 380307 Peterson J 420327
DATEに対する算術演算を示す他の例を、以下のテーブルに示します。システム日付は2001年1月24日とします。
| 文 | システムから返される値 |
|---|---|
| SELECT CURRENT_DATE; | Date -------- 01/01/24 |
| SELECT CURRENT_DATE +3; | (Date+3) -------- 01/01/27 |
| SELECT CURRENT_DATE -3; | (Date-3) -------- 01/01/21 |
| SELECT CURRENT_DATE - CURRENT_DATE; | (Date-Date) ----------- 0 |