IBM® Informix® 12.10

日時 (DATETIME) 型

日時 (DATETIME) 型は、日付と時刻を格納します。

日時 (DATETIME) 型値をどれほどの精度で格納するかを指定できます。精度は、年単位から小数部単位まで指定可能です。

日時 (DATETIME) 型はデータ値を、データ型宣言で各時間単位 ( など) を表す連続的なフィールド系列として格納します。

日時 (DATETIME) 型を指定するフィールド修飾子は、次のような形式になります。
DATETIME largest_qualifier TO smallest_qualifier
これは時間隔 (INTERVAL) 型フィールド修飾子と類似していますが、時間隔 (INTERVAL) 型のように時間範囲ではなく、日時 (DATETIME) 型はある時点を表します。 このような差が、日時 (DATETIME) 型と時間隔 (INTERVAL) 型修飾子の間にはあります。
  • DATETIME キーワードは INTERVAL キーワードを置き換えます。
  • 日時 (DATETIME) 型フィールド修飾子は、largest_qualifier 時間単位にデフォルト以外の精度を指定できません。
  • 日時 (DATETIME) 型のフィールド修飾子には、YEAR、MONTH、およびさらに小さい時間単位を含めることができますが、DAY フィールド修飾子 (またはそれより小さい時間単位) を含む時間隔 (INTERVAL) 型には YEAR または MONTH フィールド修飾子を同時に含めることはできません。

日時 (DATETIME) 型の largest_qualifier および smallest_qualifier は、次の表にリストするいずれのフィールドにもなれます。 ただし、このとき smallest_qualifier には largest_qualifier より大きい時間単位を指定しません。 (最大時間単位と最小時間単位は等しく指定できます。例えば、DATETIME YEAR TO YEAR です)。

表 1. 日時 (DATETIME) 型フィールド修飾子
修飾子フィールド 有効エントリ
YEAR (年) 西暦 1 年から 9999 年まで
MONTH (月) 1 月から 12 月まで
DAY (日) 月に合わせて、1 日から 31 日までの適切な値
HOUR (時) 時 (真夜中から 23 時まで)
MINUTE (分) 0 分から 59 分まで
SECOND (秒) 0 秒から 59 秒
FRACTION (小数部) 小数点以下 5 桁までの 10 進数の小数秒。デフォルトは小数点以下 3 桁 (1000 分の 1 秒) までです。smallest_qualifier で別の桁数を指定するには、FRACTION(n) を書き込みます。 ここで n は 1 から 5 までの桁数です。

日時 (DATETIME) 型列の宣言は、YEAR から FRACTION までの時間単位の全範囲を含む必要はありません。これら時間単位の連続的なサブセットを含むか、または単一の時間単位を指定できます。

例えば、入力値が時間単位の連続した系列の情報を含んでいる場合は、YEAR TO MINUTE と宣言された列に MONTH TO HOUR 値を入力できます。ただし、MONTH と HOUR のみの入力はできません。DAY の値も含んでいる必要があります。

DB-Access TABLE メニューを使用し、日時 (DATETIME) 型修飾子を指定しない場合、デフォルトの日時 (DATETIME) 型修飾子の YEAR TO YEAR が設定されます。

有効な日時 (DATETIME) 型リテラルは、DATETIME キーワード、入力値、およびフィールド修飾子を含む必要があります。入力値には、列に宣言されたものより少ないフィールドのみ含めるため、これらの修飾子が必要になります。最初と最後のフィールドに許容される修飾子は、表 表 1 にリストされている有効な日時 (DATETIME) 型フィールドのリストと同一です。

フィールド修飾子に整数として値を書き込み、区切り記号で分離します。以下の表は、デフォルトの米国英語 (U.S. English) ロケールの日時 (DATETIME) 型値で使用される区切り記号のリストです。 (これらは、時間隔 (INTERVAL) 型値で使用される区切り記号のスーパセットです。)

表 2. 日時 (DATETIME) 型で使用される区切り記号
区切り記号 日時 (DATETIME) 型リテラルの位置
ハイフン (-) 時間単位 YEAR、MONTH、および DAY 値の間
空白 ( ) 時間単位 DAY と HOUR 値の間
コロン (:) 時間単位 HOUR、MINUTE、および SECOND 値の間
小数点 (.) 時間単位 SECOND と FRACTION 値の間
以下の図は、区切り文字を使用した DATETIME YEAR TO FRACTION(3) の値を示しています。
図 1. 区切り記号を使用した日時 (DATETIME) 型値の例
文字列「2003-09-23 12:42.06.001」
は 2003 年のリテラル値で、この「-09-23」は 9 月の 23 番目の日であり、「12:42.06.001」は午後 12 時 (正午) から 42 分、6 秒、そして 1/1000 秒
を意味します。図の説明の終了

列における時間単位フィールドよりも少ない値を入力した場合、この値は宣言された時間単位フィールドをすべて満たすよう自動的に拡張されます。組み込んだ時間単位より大きい値をフィールドに入力しなかった場合、そこにはシステム クロック カレンダによる現行の時間単位が自動的に割り当てられます。また、小さい値をフィールドに入力しなかった場合、そこにはゼロ (または MONTH と DAY には 1 ) が割り当てられます。

日時 (DATETIME) 型値を、文字列としても入力できます。文字列には、日時 (DATETIME) 型列で定義された各フィールド情報を含む必要があります。次の例の INSERT 文は、文字列として入力される日時 (DATETIME) 型値を示しています。
INSERT INTO cust_calls (customer_num, call_dtime, user_id,
       call_code, call_descr)
     VALUES (101, '2001-01-14 08:45', 'maryj', 'D',
       'Order late - placed 6/1/00');

call_dtime が DATETIME YEAR TO MINUTE として宣言された場合、文字列は yearmonthdayhour、および minute フィールドに対応する値を含む必要があります。

文字列が、宣言されたすべてのフィールド情報を含まない場合 (またはフィールドを追加する場合)、データベース サーバはエラーを戻します。

日時 (DATETIME) 型列のフィールドはすべて、yearfraction フィールドを除き、2 桁の数字です。year フィールドは、4 桁で格納されます。year フィールドに値を 2 桁で入力した場合、その省略された year 値を 4 桁に拡張する方法は、DBCENTURY 環境変数の設定に依存します。

例えば、year 値として 02 と入力した場合、年が 19022002、または 2102 のいずれに解釈されるかは、DBCENTURY の設定と実行時のシステム クロック カレンダの 値に依存します。DBCENTURY を設定していない場合、現行年の先行桁がデフォルトで追加されます。

fraction フィールドには、1 ≤ n ≤ 5 で ある n 桁が必要で、偶数値に 切り上げられます。次の式を使用して、日時 (DATETIME) 型値のバイト数が算出できます。結果は整数値に切り上げられます。
(total number of digits for all fields) /2 + 1

例えば、YEAR TO DAY 修飾子は、合計で 8 桁 (year に 4 桁、month に 2 桁、day に 2 桁) 必要です。したがって、このデータを格納するには (8/2) + 1 (つまり 5 バイト必要) です。

SQL 文でデータベース サーバがオペレーティング システムから現在時刻を取得する場合、USEOSTIME 構成パラメータは二次的な細分性に影響します。 詳しくは、「IBM Informix 管理者リファレンス」を参照してください。

ESQL API では、DBTIME 環境変数は日時 (DATETIME) 型のフォーマットに影響します。 デフォルトではないロケールと GL_DATE および DBDATE 環境変数の設定は、日時 (DATETIME) 型の表示にも影響します。 ただし、日時 (DATETIME) 型列の内部記憶域形式には影響しません。

米国英語 (U.S. English) 以外のロケールを指定した場合、そのロケールは日時 (DATETIME) 型値を文化的差異に基づいた表示フォーマットで定義します。デフォルトの表示フォーマットは、GL_DATETIME 環境変数の設定により変更できます。デフォルトではないロケールのデータベースでデフォルトではない GL_DATETIME 設定を使用する場合、以下の操作でデータベース サーバがローカライズされた日時 (DATETIME) 型値を正しく処理するには、事前に USE_DTENV 環境変数を 1 に設定する必要があります。
  • DB-Access の LOAD または UNLOAD 機能の使用
  • dbexport または dbimport マイグレーション ユーティリティの使用
  • CREATE EXTERNAL TABLE 文が定義したオブジェクトまたはデータベース表での SQL の DML 文の使用

ロケールと、エンド ユーザの日時 (DATETIME) 型形式を 指定できる GLS 環境変数の詳細については、「IBM Informix GLS ユーザーズ ガイド」を参照してください。


フィードバックの送信 | 例の共有 | トラブルシューティング

PDF を見つけるには、Publications for the IBM Informix 12.10 family of products を参照してください。
リリース ノート、ドキュメント ノート、マシン ノートについては、リリース ノート・ページを参照してください。
タイムスタンプ リリース日: 2013 年 3 月