TIMESTAMP_FORMAT
TIMESTAMP_FORMAT 関数は、指定された形式を使用した入力ストリングの解釈に基づくタイム・スタンプを戻します。
- string-expression
- 組み込み文字ストリング・データ・タイプの値か、グラフィック・ストリング・データ・タイプを返す式。
結果のサブストリングは 、format-string に指定された形式を使用する日付またはタイム・スタンプと解釈されます。
- format-string
- 組み込み文字ストリング・データ・タイプか、グラフィック・ストリング・データ・タイプを戻す式。
format-string は、string-expression を日付またはタイム・スタンプ値として
どのように解釈するかを示すテンプレートを含みます。
有効な format-string には少なくとも 1 つのフォーマット・エレメントを含める必要があり、日付またはタイム・スタンプのすべての構成要素に複数の指定を含めてはならず、また 表 1 に特に注記のない限り、フォーマット・エレメントの任意の組み合わせを含めることができます。 例えば、format-string には YY と YYYY の両方を含めることはできません。これは、それらが string-expression の年の構成要素を解釈するためにともに使用されてしまうためです。 下の表を参照して、どのフォーマット・エレメントを同時に指定できないかを確認してください。
2 つのフォーマット・エレメントは、オプションで以下の 1 つ以上の区切り文字で分離することができます。- 負符号 (-)
- ピリオド (.)
- スラッシュ (/)
- コンマ (,)
- アポストロフィ (′)
- セミコロン (;)
- コロン (:)
- ブランク ( )
区切り文字は format-string の先頭または末尾に指定することもできます。これらの区切り文字は、フォーマット・ストリングで任意に組み合わせて使用できます (例えば、「YYYY/MM-DD HH24:MM.SS」)。 string-expression で指定する区切り文字は構成要素を区切るために使用するものであり、format-string で指定する区切り文字と一致する必要はありません。
表 1. TIMESTAMP_FORMAT 関数のフォーマット・エレメント フォーマット・エレメント タイム・スタンプの関連する構成要素 説明 AM または PM 1、2 時 ピリオドが付かない午前/午後の指定子。この午前/午後の指定子は、ライブラリー *LIBL の中のメッセージ・ファイル QCPFMSG 内のメッセージ CPX9035 から取り出されます。 A.M. または P.M. 1、2 時 ピリオドが付いた午前/午後の指定子。このフォーマット・エレメントは、 「A.M.」または「P.M.」と正確に一致するストリングを使用し、ジョブのメッセージに使用される言語には 関係ありません。 DAY、Day、または day 1、3 なし 大文字、タイトル文字、または小文字のフォーマットの曜日の名前。 曜日の名前は、ライブラリー *LIBL の中のメッセージ・ファイル QCPFMSG のメッセージ CPX9034 から検索されます。 DY、Dy、または dy 1、3 なし 大文字、タイトル文字、または小文字のフォーマットの曜日の省略名。 省略された曜日の名前は、ライブラリー *LIBL の中のメッセージ・ファイル QCPFMSG のメッセージ CPX9039 から検索されます。 D 1、3 なし 曜日 (1-7)。1 は日曜日です。 DD 日 日 (01 から 31)。 DDD 月、日 年間通算日 (001 から 366)。 FF または FFn 端数秒 小数秒 (0 から 999999999999)。数字 n は、string-expression 内に予想される桁数の指定に使用します。n の有効な値は 1 から 12 です。FF を指定することは、FF6 を指定するのと同等です。FF フォーマット・エレメントに対応する string-expression 内の構成要素の後に区切り文字が続いている場合、またはそれが最後の構成要素である場合、小数秒の桁数はフォーマット・エレメントで指定した桁数よりも少ないことがあります。この場合は、指定した桁数の右側に数字のゼロが埋め込まれます。 HH 時 HH の動作は HH12 と同様です。 HH12 時 12 時間形式の時 (01-12)。AM がデフォルトの午前/午後の指定子です。 HH24 時 24 時間形式の時刻 (00 から 24)。 J 年、月、および日 ユリウス日付 (紀元前 4713 年 1 月 1 日からの日数)。 MI 分 分 (00 から 59)。 MM 月 月 (01 から 12)。 MONTH、
Month、または month 1月 大文字、タイトル文字、または小文字のフォーマットの月の名前。 月の名前は、ライブラリー *LIBL の中のメッセージ・ファイル QCPFMSG のメッセージ CPX3BC0 から検索されます。 MON、Mon、または mon 1 月 大文字、タイトル文字、または小文字のフォーマットの月の省略名。 月の名前は、ライブラリー *LIBL の中のメッセージ・ファイル QCPFMSG のメッセージ CPX8601 から検索されます。 NNNNNN マイクロ秒 マイクロ秒 (FF6 と同じ)。 RR 4 年 調整される年の最後の 2 桁 (00 から 99)。 RRRR 4 年 4 桁の調整済みの年 (0000 から 9999)。 SS 秒 秒 (00 から 59)。 SSSSS 時、分、および秒 前の深夜 12 時以降の秒数 (00000 から 86400)。 Y 年 年の最後の 1 桁 (0-9)。現在の年の最初の 3 桁が、完全な 4 桁の年の判別に使用されます。 YY 年 その年の最後の 2 桁 (00 から 99)。現在の年の最初の 2 桁が、完全な 4 桁の年の判別に使用されます。 YYY 年 年の最後の 3 桁 (000-999)。現在の年の最初の桁が、完全な 4 桁の年の判別に使用されます。 YYYY 年 4 桁の年 (0000-9999)。 注 :- 正確なスペルと大文字小文字の組み合わせだけが使用できます。 このフォーマット・エレメントが無効な大文字小文字の組み合わせで指定された場合、エラーが返されます。
- 午前/午後の指定子として、A.M. と P.M. と同様に AM と PM のセットを format-string で使用できます。 format-string で午前/午後の指定子とともに HH24 が使用された場合、結果のタイム・スタンプの時間部分を決定するために、string-expression 内の午前/午後の指定子の値は使用されません。
- DAY、Day、day、DY、Dy、dy、および D のフォーマット・エレメントは結果のタイム・スタンプのいずれかの構成要素に提供されません。 ただし、これらのフォーマット・エレメントのいずれかに指定した値は、結果のタイム・スタンプの年、月、および日の構成要素の組み合わせに適切でなければなりません。例えば、string-expression の値 'Monday 2008-10-06' は、値 'Day YYYY-MM-DD' に対して有効です。ただし、string-expression への 'Tuesday 2008-10-06' という値は同じ format-string ではエラーになります。
- RR と RRRR の各フォーマット・エレメントを使用すれば、次の表に従って現在の年の左端の 2 桁に基づいて 2 桁の値または 4 桁の値を生成するように値を調整することによって、年の指定の解釈を変更することができます。
現在の年の最後の 2 桁 ストリング式 内の年の 2 桁 日付またはタイム・スタンプの年コンポーネントの最初の 2 桁 0-50 0-49 現在の年の最初の 2 桁 51-99 0-49 現在の年の最初の 2 桁 + 1 0-50 50-99 現在の年の最初の 2 桁 - 1 51-99 50-99 現在の年の最初の 2 桁 例えば、現在の年が 2007 の場合、フォーマット 'RR' の '86' は 1986 を意味しますが、現在の年が 2052 の場合は 2086 を意味します。
format-string にタイム・スタンプの以下の構成要素の 1 つに対してフォーマット・エレメントが含まれていない場合は、デフォルトが使用されます。
タイム・スタンプの構成要素 デフォルト 年 現在の年、4 桁 月 現在の月、2 桁 日 01 (現在の月の最初の日) 時 00 分 00 第 2 00 端数秒 結果のタイム・スタンプの精度に一致するゼロの数 日付またはタイム・スタンプ値のコンポーネント (月、 日、時間、分、秒など) が format-string 内の対応するフォーマット・エレメントの 最大有効桁数に達していない場合、そのコンポーネントに先行ゼロを指定 することができます。
日付またはタイム・スタンプのコンポーネント (年、 月、日、時間、分、秒など) を表す string-expression のサブストリングの桁数は、 日付またはタイム・スタンプのそのコンポーネントの最大桁数より少なくてもかまいません。 指定されていない桁は、デフォルトでゼロと解釈されます。例えば、フォーマット・ストリング 'YYYY-MM-DD HH24:MI:SS' では、入力した値が '999-3-9 5:7:2' の場合、'0999-03-09 05:07:02' と同じ結果が生成されます。
- precision-constant
- 結果のタイム・スタンプ精度を指定する整数定数。値の範囲は 0 から 12 です。precision-constant が指定されていない場合、タイム・スタンプ精度はデフォルトで 6 になります。
結果は、precision-constant に基づいた精度を持つタイム・スタンプです。引数の最初の 2 つのいずれかが NULL 値になる可能性がある場合、結果も NULL 値になる可能性があります。引数の最初の 2 つのいずれかが NULL 値の場合、その結果は NULL 値です。
注
ユリウス暦およびグレゴリオ暦: この関数では、1582 年 10 月 15 日のユリウス暦からグレゴリオ暦への移行が考慮されます。
代替構文: TO_DATE と TO_TIMESTAMP は、TIMESTAMP_FORMAT の同義語です。
例
- 2000 年が始まる 1 秒前 (1999 年 12 月 31 日 23 時 59 分 59 秒) にあたる受信タイム・スタンプで、IN_TRAY 表に行を挿入します。
INSERT INTO IN_TRAY (RECEIVED) VALUES (TIMESTAMP_FORMAT('1999-12-31 23:59:59', 'YYYY-MM-DD HH24:MI:SS'))
- アプリケーションで、日付情報のストリングが INDATEVAR という変数に受け取られます。この値は厳密にはフォーマット設定されていなく、また年に 2 桁または 4 桁の数字、月と日に 1 桁または 2 桁の数字が含まれています。
日付の各構成要素は負符号 (-) またはスラッシュ (/) 文字で分離され、日、月、および年の順序であることが予期されています。時間情報は、時 (24 時間形式) および分で構成され、通常コロンで分離されています。サンプル値としては、'15/12/98 13:48' や '9-3-2004 8:02' などがあります。
このような値を IN_TRAY 表に挿入します。
フォーマットに RRRR を使用すると、2 桁と 4 桁の年の値が考慮され、現在の年に基づいて入力されていない最初の 2 桁が割り当てられます。 YYYY を使用すると、2 桁の年の入力値には先行ゼロが設定されます。 また、スラッシュ区切り文字では負符号 (-) 文字も許可されます。現在の年が 2007 年とすると、サンプル値の結果として生成されるタイム・スタンプは以下のとおりです。INSERT INTO IN_TRAY (RECEIVED) VALUES (TIMESTAMP_FORMAT(:INDATEVAR, 'DD/MM/RRRR HH24:MI'))
'15/12/98 13:48' --> 1998-12-15-13.48.00.000000 '9-3-2004 8:02' --> 2004-03-09-08.02.00.000000
- 例: QSYS2.SYSPROCS の ROUTINE_CREATED の値が
、2000 年の開始の 1 秒前 (「1999-12-31 23:59:59」) に等しい場合、
文字変数 TVAR をその値に設定します。
文字ストリングは、示されたフォーマット・ストリングに従って解釈してください。
SELECT VARCHAR_FORMAT(ROUTINE_CREATED, 'YYYY-MM-DD HH24:MI:SS') INTO :TVAR FROM QSYS2.SYSPROCS WHERE ROUTINE_CREATED = TIMESTAMP_FORMAT('1999-12-31 23:59:59', 'YYYY-MM-DD HH24:MI:SS')
- 午前/午後の指定子を含むストリングのタイム・スタンプ値を戻します。
string-expression format-expression 結果のタイム・スタンプ値 '2015-10-28 10:29AM' 'YYYY-MM-DD HH12:MIAM' 2015-10-28-10.29.00.000000 '2015-10-28 10:29PM' 'YYYY-MM-DD HH12:MIAM' 2015-10-28-22.29.00.000000 '2015-10-28 10:29AM' 'YYYY-MM-DD HH24:MIAM' 2015-10-28-10.29.00.000000 '2015-10-28 10:29PM' 'YYYY-MM-DD HH24:MIAM' 2015-10-28-10.29.00.000000 '2015-10-28 22:29AM' 'YYYY-MM-DD HH24:MIAM' 2015-10-28-22.29.00.000000 '2015-10-28 22:29PM' 'YYYY-MM-DD HH24:MIAM' 2015-10-28-22.29.00.000000