|以下のセクションでは、日時値の「文字ストリング」表記という言い方は、「ストリング」表記に |変更されています。DB2 は、ユニコード・データベースに限り、日時値の「漢字ストリング」表記をサポートするようになりました。
|データ・タイプが DATE、TIME、または TIMESTAMP の値は、ユーザーがすぐに理解できる形の内部形式で表されます。 |しかし、日付値、時刻値、およびタイム・スタンプ値も、ストリングで表すことができます。 |データ・タイプが DATE、TIME、または TIMESTAMP の定数または変数は存在しないため、 |ストリングで表すことができるのは便利です。 |日時値を検索するには、その前に、その日時値がストリング変数に割り当てられている必要があります。CHAR 関数 |または GRAPHIC 関数 (ユニコード・データベースのみ) は、 |日時値をストリング表記に変更するために使用できます。 |ストリング表記は、プログラムがプリコンパイルされるかデータベースにバインドされるときに DATETIME オプションの指定によってオーバーライドされない限り、 |通常は、データベースの国別 / 地域別コードに関連した、日時値のデフォルト形式です。
|その長さにかかわらず、ラージ・オブジェクト・ストリング、LONG VARCHAR 値または LONG VARGRAPHIC 値を、日時値を表すために使用することはできません (SQLSTATE 42884)。
|内部日時値の操作で日時値の有効なストリング表記が使用される場合、 |そのストリング表記は、操作の前に、日付、時刻、またはタイム・スタンプの内部形式に変換されます。
|日付、時刻、およびタイム・スタンプのストリングに、文字と数字以外は含めることはできません。
|これらの用語の定義が少し変更されています。 |「文字ストリング」表記という言い方は、「ストリング」表記に変更されました。
|DATE、TIME、および TIMESTAMP を GRAPHIC および VARGRAPHIC にキャストできるように |なりました。GRAPHIC および VARGRAPHIC を DATE、TIME、および TIMESTAMP にキャストできるようになりました。 |漢字ストリングはユニコード・データベースでのみサポートされます。
|割り当てと比較において、 |漢字ストリングと、DATE 値、TIME 値、および TIMESTAMP 値の間でデータ・タイプの互換性ができました。 |漢字ストリングはユニコード・データベースでのみサポートされます。
|日時の割り当てにおける基本ルールは、DATE 値、TIME 値、または TIMESTAMP 値は、 |一致するデータ・タイプ (DATE、TIME、または TIMESTAMP のそれぞれ) の列か、 |あるいは、固定長または可変長ストリング変数またはストリング列にのみ割り当てることができる |ということです。LONG VARCHAR、CLOB、LONG VARGRAPHIC、 |DBCLOB、または BLOB 変数または列に割り当てることはできません。 | |
|日時値がストリング変数またはストリング列に割り当てられるとき、 |ストリング表記への変換は自動的に行われます。 |日付、時刻、またはタイム・スタンプのどの部分においても、先行ゼロは保持されます。 |ターゲットに必要な長さは、ストリング表記のフォーマットによって異なります。 |ターゲットの長さが必要な長さよりも長く、しかもターゲットが固定長ストリングである場合は、右にブランクが埋め込まれます。 |ターゲットの長さが必要な長さよりも短い場合は、日時値のタイプとターゲットのタイプによって、結果は異なります。
|ターゲットがホスト変数の場合、以下のルールが適用されます。 |
|ISO または JIS フォーマットを使用する場合で、ホスト変数の長さが 8 文字未満であれば、 |時刻の「秒」部分は結果から省略され、標識変数があれば、 |そこに割り当てられます。SQLCA の SQLWARN1 フィールドが設定されて、省略されたことが示されます。
|>>-DATE--(--expression--)-------------------------------------->< | |
|スキーマは SYSIBM です。
|DATE 関数は、値からの日付を戻します。
|引き数は、日付、タイム・スタンプ、3 652 059 以下の正数、日付またはタイム・スタンプの有効なストリング表記、 |または、LONG VARCHAR、CLOB、LONG VARGRAPHIC、DBCLOB、BLOB 以外の、長さが 7 のストリングである必要があります。
|ユニコード・データベースだけが、日付またはタイム・スタンプの漢字ストリング表記の引き数をサポートします。
|引き数が長さ 7 のストリングである場合、そのストリングは yyyynnn 形式で、有効な日付を表している必要があります。 |ここで、yyyy は年を表す数字で、nnn は年間通算日を表す 001 から 366 の間の数字です。
|この関数の結果は日付です。 |引き数が NULL となる可能性がある場合、結果が NULL となる可能性があります。 |引き数が NULL であれば、結果は NULL 値になります。
|その他のルールは、引き数のデータ・タイプによって異なります。 |
|例:
|列 RECEIVED (タイム・スタンプ) の内部値が '1988-12-25-17.12.30.000000' を表していると想定します。 |
| DATE(RECEIVED)
| DATE('1988-12-25')
| DATE('25.12.1988')
| DATE(35)
||>>-GRAPHIC--(--graphic-expression--+------------+--)----------->< | '-,--integer-' | |
|スキーマは SYSIBM です。
|GRAPHIC 関数は、漢字ストリング・タイプの GRAPHIC 表記、あるいは日時タイプの GRAPHIC 表記を戻します。 |
|この関数の結果は GRAPHIC です。引き数が NULL となる可能性がある場合、結果が NULL となる可能性があります。引き数が NULL であれば、結果は NULL 値になります。
|日時から漢字:
|>>-GRAPHIC--(--datetime-expression--+--------------+--)-------->< | '-,--+-ISO---+-' | +-------+ | +-EUR---+ | +-JIS---+ | '-LOCAL-' | ||
|
|ストリングのコード・ページは、アプリケーション・サーバーでのデータベースのコード・ページです。 |
|>>-TIME--(--expression--)-------------------------------------->< | |
|スキーマは SYSIBM です。
|TIME 関数は、値からの時刻を戻します。
|引き数は、時刻またはタイム・スタンプであるか、または LONG VARCHAR、CLOB、 |LONG VARGRAPHIC、DBCLOB、BLOB を除く、時刻またはタイム・スタンプを表す有効なストリング表記である必要があります。
|ユニコード・データベースだけが、時刻またはタイム・スタンプの漢字ストリング表記の引き数をサポートします。
|この関数の結果は時刻です。 |引き数が NULL となる可能性がある場合、結果が NULL となる可能性があります。 |引き数が NULL であれば、結果は NULL 値になります。
|その他のルールは、引き数のデータ・タイプによって異なります。 |
|例: |
| SELECT * FROM IN_TRAY | WHERE TIME(RECEIVED) >= CURRENT TIME + 1 HOUR|
|>>-TIMESTAMP--(--expression--+-------------+--)---------------->< | '-,expression-' | |
|スキーマは SYSIBM です。
|TIMESTAMP 関数は、1 つの値または 1 組の値から、タイム・スタンプを戻します。
|ユニコード・データベースだけが、日付、時刻、またはタイム・スタンプが漢字ストリングで表記された引き数をサポートします。
|引き数のルールは、2 番目の引き数が指定されたかどうかによって異なります。 |
|長さが 14 のストリングは、有効な日時を表す yyyyxxddhhmmss の形式の数字のストリングである必要があります。 |ここで yyyy は年、xx は月、dd は日、hh は時、mm は分、ss は秒です。 |
|この関数の結果はタイム・スタンプです。 |どちらかの引き数が NULL となる可能性がある場合、結果が NULL となる可能性があります。 |どちらかの引き数が NULL であれば、結果は NULL 値になります。
|もう一方のルールは、2 番目の引き数が指定されたかどうかによって異なります。 |
|例: |
| TIMESTAMP(START_DATE, START_TIME)
|値 '1988-12-25-17.12.30.000000' が戻されます。 |
|文字から Vargraphic:
|>>-VARGRAPHIC--(--character-string-expression--)--------------->< | |
|日時から Vargraphic:
|>>-VARGRAPHIC--(--datetime-expression--)----------------------->< | |
|漢字から Vargraphic:
|>>-VARGRAPHIC--(--graphic-string-expression--+------------+-----> | '-,--integer-' | |>--)----------------------------------------------------------->< | |
|スキーマは SYSIBM です。
|VARGRAPHIC 関数は、次のものの漢字ストリング表記を戻します。 |
|この関数の結果は、いろいろな長さの漢字ストリング (VARGRAPHIC データ・タイプ) です。 |1 番目の引き数が NULL となる可能性がある場合、結果が NULL となる可能性があります。 |1 番目の引き数が NULL であれば、結果は NULL 値になります。
|文字から Vargraphic
|結果の長さ属性は、引き数の長さ属性と同じです。
|S が character-string-expression の値を表すとします。S の中の |各 1 バイト文字は、それに対応する 2 バイト表記、または 2 バイトの置換文字に変換されます。S の中の |各 2 バイト文字は、「そのまま」マップされます。2 バイト文字の 1 番目の |バイトが S の最後のバイトである場合、その文字は、2 バイトの置換文字に変換されます。S 内の |文字の順序は保持されます。
|以下は、変換に関する追加の考慮事項です。 |
|日時から Vargraphic
|漢字から Vargraphic
|graphic-string-expression の長さが結果の長さ属性よりも長い場合、 |切り捨てられる文字がすべてブランクで、 |しかも graphic-string-expression が長ストリング (LONG VARGRAPHIC または DBCLOB) でない限り、 |切り捨てが行われ、警告が戻されます (SQLSTATE 01004)。