time_t 時間構造体のサポート

API は、C++ time_t 構造体を処理するための関数を提供します。 time_tの実装はシステムによって異なりますが、Netezza Performance Serverの実装では符号付きint32の実装を使用しています。 これはNetezza Performance ServerがUDXコンパイルに使用しているgcc3.4.5とdiabコンパイラーで使われている実装です。 この実装には制限があります。つまり、1/1/1970 から 1/19/2038 までの日付 (0 から 2147483647 の値) のみをサポートします。 time_t 構造体標準は範囲外の値をサポートしますが、それ以外の値の動作は保証されていません。 本書の残りのセクションでは、この特定の実装を "time_t" と呼びます。

データ型ヘルパーAPIはtime_tとNetezza Performance ServerのDateとTimestampデータ型間のデコードとエンコードのみをサポートしています。 time_tの範囲はNetezza Performance ServerのDateとTimestampの範囲のサブセットであるため、この変換ではtime_tの範囲の値のみを使用できます。 次の表に、time_t、Netezza Performance ServerDate、Netezza Performance ServerTimestamp の相関値を示します。 API 関数を使って time_t の範囲外の Date 値または Timestamp 値をエンコードまたはデコードすると、エラーになります。

表 1. time_t と PerformanceServerNetezza®の日付とタイムスタンプの変換例
グレゴリオ暦の日付/時間 time_t 値 (UTC + 0:00 (GMT)) NZ Date 値 NZ Timestamp 値
サポートされる NZ Date の下限: 1/1/0001, 00:00:00 未定義 -730,119 -63,082,281,600,000,000
time_t エポックの開始: 1/1/1970, 00:00:00 0 -10,957 -946,684,800,000,000
NZ 日ゼロ: 1/1/2000, 00:00:00 946,684,800 0 0
time_t エポックの終了: 1/19/2038, 03:14:07 2,147,483,647 13,898 1,200,798,847,000,000
サポートされる NZ Date の上限: 12/31/9999, 11:59:59.999999 未定義 2,921,939 252,455,615,999,999,999