機能
日時値関数は、日時型の値となる関数です。
関数 | 機能 |
---|---|
現在の日付を返却します。 | |
現在の時刻を返却します。 | |
現在の時刻印を返却します。 | |
日付を指定した日時フィールドで丸めます。 | |
日付を指定した日時フィールドで切捨てます。 | |
DATE型に、数値属性で表現した時間隔を加算した結果の日時を返却します。 | |
当該月の最終日付を返却します。 | |
指定された日付書式で記述された文字型データをDATE型に変換します。 |
記述形式
一般規則
CURRENT_DATEは、現在の日付を返します。
CURRENT DATE値関数のデータ型は、DATE型です。
CURRENT_DATE
CURRENT_DATE →結果はDATE'2007-04-10'になります。 現在日付が西暦2007年4月10日の場合。
CURRENT_TIMEは、現在の時刻を返します。
CURRENT TIME値関数のデータ型は、TIME型です。
CURRENT_TIME
CURRENT_TIME →結果はTIME'15:58:57'になります。 現在時刻が15時58分57秒の場合。
CURRENT_TIMESTAMPは、現在の時刻印を返します。
CURRENT TIMESTAMP値関数のデータ型は、TIMESTAMP型です。
CURRENT_TIMESTAMP
CURRENT_TIMESTAMP →結果はTIMESTAMP'2007-04-10 15:58:59'になります。 現在日付が西暦2007年4月10日でかつ現在時刻が15時 58分59秒の場合。
日付は日時値式です。データ型はDATE型に代入可能でなければなりません。
日付がNULLである場合は、ROUND_DATE関数の結果はNULLとなります。
ROUND_DATE関数の結果のデータ型はDATE型です。
丸め単位は文字列型の値指定です。丸めを行う単位を指定します。丸め単位に指定できる値と、ROUND_DATE関数の結果は以下のようになります。
丸め単位 | 意味 | 引数の日付 | 結果 |
---|---|---|---|
YEAR | 年で丸め | 1月1日 ~ 6月30日 | 当年の1月1日 |
JYEAR | 年度で丸め | 4月1日 ~ 9月30日 | 当年度の4月1日 |
MONTH | 月で丸め | 1日 ~ 15日 | 当月の1日 |
HALF | 半期で丸め | 1月1日 ~ 3月31日 | 当年の1月1日 |
JHALF | 年度の半期で丸め | 4月1日 ~ 6月30日 | 当年の4月1日 |
QUARTER | 四半期で丸め | 1月1日 ~ 2月15日 | 当年の1月1日 |
ROUND_DATE関数の各オペランドに動的パラメタ指定が指定された場合のDESCRIBE情報を以下に示します。
オペランド | DESCRIBE情報 |
---|---|
日付 | DATE |
丸め位置 | CHAR(7) |
ROUND_DATE関数
ROUND_DATE(DATE'2007-08-15','MONTH') →結果はDATE'2007-08-01'になります。 ROUND_DATE(DATE'2007-08-23','QUARTER') →結果はDATE'2007-10-01'になります。
日付は日時値式です。データ型はDATE型に代入可能でなければなりません。
日付がNULLである場合は、TRUNC_DATE関数の結果はNULLとなります。
TRUNC_DATE関数の結果のデータ型はDATE型です。
切捨ての単位は文字列型の値指定です。切捨てを行う単位を指定します。切捨ての単位に指定できる値と、TRUNC_DATE関数の結果は以下のようになります。
切捨ての単位 | 意味 | 引数の日付 | 結果 |
---|---|---|---|
YEAR | 年で切捨て | 1月1日 ~ 12月31日 | 当年の1月1日 |
JYEAR | 年度で切捨て | 4月1日 ~ 3月31日 | 当年度の4月1日 |
MONTH | 月で切捨て | 1日 ~ 31日 | 当月の1日 |
HALF | 半期で切捨て | 1月1日 ~ 6月30日 | 当年の1月1日 |
JHALF | 年度の半期で切捨て | 4月1日 ~ 9月30日 | 当年の4月1日 |
QUARTER | 四半期で切捨て | 1月1日 ~ 3月31日 | 当年の1月1日 |
TRUNC_DATE関数の各オペランドに動的パラメタ指定が指定された場合のDESCRIBE情報を以下に示します。
オペランド | DESCRIBE情報 |
---|---|
日付 | DATE |
切捨て単位 | CHAR(7) |
TRUNC_DATE関数
TRUNC_DATE(DATE'2007-08-22','YEAR') →結果はDATE'2007-01-01'になります。 TRUNC_DATE(DATE'2007-02-15','JHALF') →結果はDATE'2006-10-01'になります。
日付のデータ型はDATE型に代入可能でなければなりません。
加算数は数値式です。INTEGER型に変換されます。
ADD_DATE関数の結果のデータ型は、DATE型です。
日付または加算数がNULL値である場合、ADD_DATE関数の結果はNULLとなります。
加算数が負の値の場合、日付から加算数の絶対値を時間隔の単位として減算します。減算により、1年より小さくなった場合はエラーとなります。
月数の加算により、暦上存在しない日付になった場合は、日フィールドの値をその月の最終日に補正します。
時間隔の単位は文字列型の値指定です。指定できる文字列と意味を以下に示します。
時間隔の単位 | 意味 |
---|---|
YEAR | 加算数を年数として加算します。 |
MONTH | 加算数を月数として加算します。 |
DAY | 加算数を日数として加算します。 |
ADD_DATE関数の各オペランドに動的パラメタ指定が指定された場合のDESCRIBE情報を以下に示します。
オペランド | DESCRIBE情報 |
---|---|
日付 | DATE |
加算数 | INTEGER |
時間隔の単位 | CHAR(5) |
ADD_DATE関数
ADD_DATE(DATE'2006-08-28',6,'MONTH') →結果はDATE'2007-02-28'になります。 ADD_DATE(DATE'2007-08-31',1,'MONTH') →結果はDATE'2007-09-30'になります。 ADD_DATE(DATE'2007-08-28',-2,'DAY') →結果はDATE'2007-08-26'になります。
LAST_DAY関数は、日付で指定した月の最終日付を返します。
日付は日時値式です。DATE型に代入可能でなければなりません。
LAST_DAY関数の結果のデータ型はDATE型です。
日付がNULLの場合、LAST_DAY関数の実行結果はNULLとなります。
LAST_DAY関数の各オペランドに動的パラメタ指定が指定された場合のDESCRIBE情報を以下に示します。
オペランド | DESCRIBE情報 |
---|---|
日付 | DATE |
LAST_DAY関数
LAST_DAY(DATE'2007-06-01') →結果はDATE'2007-06-30'になります。
変換元は文字値式です。データ型は文字列型で、その書式は日付書式と一致していなければなりません。月や日など、先行する0は省略できません。
日付書式は値指定です。変換元の書式を表す文字列を指定します。
日付書式を省略すると、デフォルトの日付書式が選択されたと見なします。デフォルトの日付書式は、“YYYY-MM-DD”です。
変換元がNULLである場合は、CNV_DATE関数の結果はNULLとなります。
日付書式がNULLである場合は、CNV_DATE関数の結果はNULLとなります。
CNV_DATE関数の結果のデータ型はDATE型です。
日付書式に月や日を表す文字列を指定しなかった場合、CNV_DATE関数は書式要素の組合せに応じて、ある期間の最終日を返します。詳細は“CNV_DATE関数に指定可能な書式要素の組合せ”の備考を参照してください。
日付書式には、書式要素の組合せを任意の順序で指定できます。また書式要素は任意のセパレータで区切って指定することができます。ただし、同じ書式要素を2度以上指定した場合やセパレータを2文字以上連続して記述することはできません。詳細は、“日付書式”、“CNV_DATE関数に指定可能な書式要素の組合せ”、“セパレータ”を参照してください。
CNV_DATE関数の各オペランドに動的パラメタ指定が指定された場合のDESCRIBE情報を以下に示します。
オペランド | DESCRIBE情報 |
---|---|
変換元 | CHAR(10) |
日付書式 | CHAR(10) |
CNV_DATE関数
CNV_DATE('Saturday APR 14,2007','DAY MON DD,YYYY') →結果はDATE'2007-04-14'になります。 CNV_DATE('20070414','YYYYMMDD') →結果はDATE'2007-04-14'になります。 CNV_DATE('2007-03-10','YYYJ-MM-DD') →結果はDATE'2006-03-10'になります。 CNV_DATE('2007-04-14') →結果はDATE'2007-04-14' になります。 CNV_DATE('2007','YYYY') →結果はDATE'2007-12-31' になります。 CNV_DATE('Mondey 2007.04.23','DAY YYYY.MM.DD') →結果はエラーになります。正しくはMondayです。 CNV_DATE('FRIJuly232007','DYMONTHDDYYYY') →結果はDATE'2007-07-23'になります。
DATE型は通常、「YYYY-MM-DD」のシステム標準書式で扱います。しかし、システム標準書式以外の書式でDATE型を扱いたいような場合があります。このような場合に「日付書式」を利用します。
日付書式は、日付を表現する際の文字列の書式です。この日付書式は、DATE型と文字型との間の変換関数の入力パラメタとして指定します。
書式要素を以下に示します。
書式要素 | 意味 |
---|---|
YYYY | 年(西暦: 1~9999) 年の開始日は1月1日 |
YYYJ | 年度(西暦: 1~9999) 年度の開始日は4月1日 |
MM | 月(1~12) |
MONTH | 月の名称 |
MON | 省略形の月の名前 |
DD | 日(1~31) |
DAY | 曜日(Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday) |
DY | 省略形の曜日(SUN,MON,TUE,WED,THU,FRI,SAT) |
H | 半期(1~2)データの表現は1文字固定 |
Q | 四半期(1~4) |
CNV_DATE関数には、指定可能な書式要素の組合せがあります。
指定可能な書式要素の組合せを以下に示します。
書式要素の組合せ | 備考 |
---|---|
YYYY, MM , DD ,[DAYまたはDY] | DAYまたはDYは省略可能です。 |
YYYJ, MM , DD ,[DAYまたはDY] | DAYまたはDYは省略可能です。 |
YYYY, MONTH, DD ,[DAYまたはDY] | DAYまたはDYは省略可能です。 |
YYYJ, MONTH, DD ,[DAYまたはDY] | DAYまたはDYは省略可能です。 |
YYYY, MON, DD ,[DAYまたはDY] | DAYまたはDYは省略可能です。 |
YYYJ, MON, DD ,[DAYまたはDY] | DAYまたはDYは省略可能です。 |
YYYY, MM | その月の最終日を返します。 |
YYYJ, MM | その年度月の最終日を返します。 |
YYYY, MONTH | その月の最終日を返します。 |
YYYJ, MONTH | その年度月の最終日を返します。 |
YYYY, MON | その月の最終日を返します。 |
YYYJ, MON | その年度月の最終日を返します。 |
YYYY, H | 半期の最終日を返します。(6月30日か12月31日) |
YYYJ, H | 年度半期の最終日を返します。(3月31日か9月30日) |
YYYY, Q | 各四半期の最終日を返します。 |
YYYJ, Q | 各四半期(年度)の最終日を返します。 |
YYYY | 当年の最終日(12月31日)を返します。 |
YYYJ | 当年度の最終日(3月31日)を返します。 |
日付書式には、上記の書式要素を任意の順序で指定することができます。また書式要素を任意のセパレータで区切って指定することもできます。ただし、以下のような指定をした場合、エラーとなります。
同じ書式要素を2度以上指定する。
CNV_CHAR(DATE'2007-04-10','YYYY.MM.MM') →エラー
セパレータを2文字以上連続して記述する。
CNV_DATE('2007-04-10','YYYY//MM///DD') →エラー
セパレータを日付書式の先頭、末尾に記述する。
CNV_DATE('2007-04-10','YYYY/MM/DD/') →エラー
書式要素にH、またはQを指定した場合、YYYYとYYYJを同時に指定することはできません。どちらか一方を指定してください。
CNV_CHAR(DATE'2007-04-10','YYYY-YYYJ-H-Q') →エラー
CNV_DATE関数に、書式要素MONTH、MON、DAYおよびDYを指定する場合、変換元の文字列は、以下の文字列と完全に一致していなければいけません。大文字、小文字の違いでもエラーとなりますので注意が必要です。
MONTH:January,February,March,April,May,June,July,August,September,October,November, December MON:JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC DAY:Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday DY:SUN,MON,TUE,WED,THU,FRI,SAT
書式要素DAYおよびDYを指定した場合、指定した日付と曜日が正しいかどうかの妥当性チェックは行いません。誤っていても曜日は無視して処理されます。
使用例
CURRENT DATE値関数(日別発注表にデータを1行追加します。処理日には現在の日付を設定します。)
INSERT INTO 在庫管理.日別発注表(取引先,取引製品,発注数量,処理日) VALUES(61,:PRODNO,:ORDERQTY,CURRENT_DATE)
CURRENT TIME値関数(日別発注表にデータを1行追加します。処理時間には現在の時間を設定します。)
INSERT INTO 在庫管理.日別発注表(取引先,取引製品,発注数量,処理時間) VALUES(61,:PRODNO,:ORDERQTY,CURRENT_TIME)
CURRENT TIMESTAMP値関数(日別発注表にデータを1行追加します。処理日時には現在の日時を設定します。)
INSERT INTO 在庫管理.日別発注表(取引先,取引製品,発注数量,処理日時) VALUES(61,:PRODNO,:ORDERQTY,CURRENT_TIMESTAMP)
ROUND_DATE関数(丸めた月ごとの売上金額の合計を求めます。)
SELECT 丸め月,SUM(売上金) FROM 売上表 GROUP BY ROUND_DATE(販売日,'MONTH') AS 丸め月
TRUNC_DATE関数(四半期ごとの発注数量の平均を求めます。)
SELECT 四半期,AVG(発注数量) FROM 発注表 GROUP BY TRUNC_DATE(発注日,'QUARTER') AS 四半期
ADD_DATE関数(発注日から1ヶ月以上経過している発注番号を求めます。)
SELECT 発注番号 FROM 発注表 WHERE 納品日 IS NULL AND ADD_DATE(発注日,1,'MONTH') < CURRENT_DATE
LAST_DAY関数(発注日から月末までの日数を求めます。)
SELECT 発注番号,SPAN_DATE(発注日,LAST_DAY(発注日),'DAY') FROM 発注表 WHERE 納品日 IS NULL
CNV_DATE関数(最低気温日付文字表の日付文字:Sunday January 14,2007を日付に変換します。)
SELECT 地区コード , CNV_DATE(日付文字, 'DAY MONTH DD,YYYY') FROM 最低気温日付文字表