日時 (DATETIME) 型は、日付と時刻を格納します。
日時 (DATETIME) 型値をどれほどの精度で格納するかを指定できます。精度は、年単位から小数部単位まで指定可能です。
日時 (DATETIME) 型はデータ値を、データ型宣言で各時間単位 (年、月、日 など) を表す連続的なフィールド系列として格納します。
DATETIME largest_qualifier TO smallest_qualifier
日時 (DATETIME) 型の largest_qualifier および smallest_qualifier は、次の表にリストするいずれのフィールドにもなれます。 ただし、このとき smallest_qualifier には largest_qualifier より大きい時間単位を指定しません。 (最大時間単位と最小時間単位は等しく指定できます。例えば、DATETIME YEAR TO YEAR です)。
| 修飾子フィールド | 有効エントリ |
|---|---|
| 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) 型値で使用される区切り記号のスーパセットです。)
| 区切り記号 | 日時 (DATETIME) 型リテラルの位置 |
|---|---|
| ハイフン (-) | 時間単位 YEAR、MONTH、および DAY 値の間 |
| 空白 ( ) | 時間単位 DAY と HOUR 値の間 |
| コロン (:) | 時間単位 HOUR、MINUTE、および SECOND 値の間 |
| 小数点 (.) | 時間単位 SECOND と FRACTION 値の間 |

列における時間単位フィールドよりも少ない値を入力した場合、この値は宣言された時間単位フィールドをすべて満たすよう自動的に拡張されます。組み込んだ時間単位より大きい値をフィールドに入力しなかった場合、そこにはシステム クロック カレンダによる現行の時間単位が自動的に割り当てられます。また、小さい値をフィールドに入力しなかった場合、そこにはゼロ (または MONTH と DAY には 1 ) が割り当てられます。
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 として宣言された場合、文字列は year、month、day、hour、および minute フィールドに対応する値を含む必要があります。
文字列が、宣言されたすべてのフィールド情報を含まない場合 (またはフィールドを追加する場合)、データベース サーバはエラーを戻します。
日時 (DATETIME) 型列のフィールドはすべて、year と fraction フィールドを除き、2 桁の数字です。year フィールドは、4 桁で格納されます。year フィールドに値を 2 桁で入力した場合、その省略された year 値を 4 桁に拡張する方法は、DBCENTURY 環境変数の設定に依存します。
例えば、year 値として 02 と入力した場合、年が 1902、2002、または 2102 のいずれに解釈されるかは、DBCENTURY の設定と実行時のシステム クロック カレンダの 値に依存します。DBCENTURY を設定していない場合、現行年の先行桁がデフォルトで追加されます。
(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) 型列の内部記憶域形式には影響しません。
ロケールと、エンド ユーザの日時 (DATETIME) 型形式を 指定できる GLS 環境変数の詳細については、「IBM Informix GLS ユーザーズ ガイド」を参照してください。