レガシー関数と推奨関数(日付構成要素を整数型で取得)
この記事では、日付フォーマットの項目(YYMDやHYYMDS等)から年や月等の構成要素を整数として抜き出す処理について、古いバージョンの関数を利用した場合と、新しいバージョンの関数を利用した場合のサンプルを記載しています。
DTPART 関数
DTPART 関数は、WebFOCUS 8.2 以降で登場した推奨関数(新しい関数)になります。
関数の使い方
DTPART(標準日付や日付時間フォーマットの日付 , 抜き出す日付構成要素)
日付構成要素 | 意味 | データ範囲 |
---|---|---|
YEAR | 年 | 1-9999 |
FISCAL_YEAR | 会計年度 | 1-9999 (FY_FIRST_MONTH 設定を参照) |
QUARTER | 四半期 | 1-4 |
MONTH | 月 | 1-12 |
WEEK | 週 | 1-53 (WEEKFIRST 設定を参照) |
DAY | 日付 | 1-31 |
DAY_OF_YEAR | 日 | 1-366 |
WEEKDAY | 曜日 | 1-7 (WEEKFIRST 設定を参照) |
HOUR | 時間 | 0-23 |
MINUTE | 分 | 0-59 |
SECOND | 秒 | 0-59 |
MILLISECOND | ミリ秒 | 0-999 |
MICROSECOND | マイクロ秒 | 0-999999 |
サンプルプロシジャ
標準日付項目(フォーマットはYYMD等)や日付時間項目(フォーマットはHYYMDm等のHから始まるもの)から日付構成要素を整数型で取得するDTPART関数のサンプルです。
レガシー関数では対象の日付項目のフォーマットが標準日付なのか日付時間なのかによって、別々の関数を利用しますが、推奨関数のDTPART関数ではどちらのフォーマットにも対応可能です。
SET PAGE-NUM = NOLEAD
DEFINE FILE CAR
-* サンプルデータ用一時項目
年月日/YYMD = DT_CURRENT_DATE();
年月日時分秒/HYYMDm = DT_CURRENT_DATETIME(MICROSECOND);
-* DTPART関数の利用サンプル
年月日_年/I4 = DTPART(年月日 ,YEAR);
年月日時分秒_年/I4 = DTPART(年月日時分秒,YEAR);
年月日_日/I4 = DTPART(年月日 ,DAY);
年月日時分秒_秒/I4 = DTPART(年月日時分秒,SECOND);
END
TABLE FILE CAR
PRINT
COUNTRY NOPRINT
年月日
年月日_年 AS '年月日,年'
年月日_日 AS '年月日,日'
年月日時分秒
年月日時分秒_年 AS '年月日時分秒,年'
年月日時分秒_秒 AS '年月日時分秒,秒'
END
DPART 関数、HPART 関数
DPART 関数や HPART 関数は、レガシー関数になります。
関数の使い方
DPART(標準日付フォーマットの日付, '抜き出す日付構成要素’ , '結果を格納する整数フォーマット’)
HPART(日付時間フォーマットの日付, '抜き出す日付構成要素’ , '結果を格納する整数フォーマット’)
日付構成要素 | 意味 | データ範囲 | HPART | DPART |
---|---|---|---|---|
YEAR | 年 | 1-9999 | 〇 | 〇 |
FISCAL_YEAR | 会計年度 | 1-9999 (FY_FIRST_MONTH 設定を参照) | 〇 | × |
QUARTER | 四半期 | 1-4 | 〇 | 〇 |
MONTH | 月 | 1-12 | 〇 | 〇 |
WEEK | 週 | 1-53 (WEEKFIRST 設定を参照) | 〇 | × |
DAY | 日付 | 1-31 | 〇 | 〇 |
DAY_OF_YEAR | 日 | 1-366 | 〇 | × |
WEEKDAY | 曜日 | 1-7 (WEEKFIRST 設定を参照) | 〇 | 〇 |
HOUR | 時間 | 0-23 | 〇 | × |
MINUTE | 分 | 0-59 | 〇 | × |
SECOND | 秒 | 0-59 | 〇 | × |
MILLISECOND | ミリ秒 | 0-999 | 〇 | × |
MICROSECOND | マイクロ秒 | 0-999999 | 〇 | × |
NANOSECOND | ナノ秒 | 0-999999999 | 〇 | × |
サンプルプロシジャ
DPART関数にてYYMDフォーマットの項目から日付構成要素を取得、
HPART関数にてHYYMDmフォーマットの項目から日付構成要素を取得するサンプルです。
処理内容自体はDTPART関数と同じものです。
SET PAGE-NUM = NOLEAD
DEFINE FILE CAR
-* サンプルデータ用一時項目
年月日/YYMD = DT_CURRENT_DATE();
年月日時分秒/HYYMDm = DT_CURRENT_DATETIME(MICROSECOND);
-* DPART関数・HPART関数の利用サンプル
年月日_年/I4 = DPART(年月日 ,'YEAR' ,'I4');
年月日時分秒_年/I4 = HPART(年月日時分秒,'YEAR' ,'I4');
年月日_日/I4 = DPART(年月日 ,'DAY' ,'I4');
年月日時分秒_秒/I4 = HPART(年月日時分秒,'SECOND','I4');
END
TABLE FILE CAR
PRINT
COUNTRY NOPRINT
年月日
年月日_年 AS '年月日,年'
年月日_日 AS '年月日,日'
年月日時分秒
年月日時分秒_年 AS '年月日時分秒,年'
年月日時分秒_秒 AS '年月日時分秒,秒'
END
結果イメージは、上図のDTPART関数の結果と同じです。