struct tm 時間構造体のサポート

データ型ヘルパー API は、time_t に加えて、共通の C++ struct tm 構造体もサポートします。 DateとTimestampの値はtmに変換できますが、TimeとTimeTzの値は日付情報が含まれていないため変換できません。

API は、追加フィールド tm_zone および tm_gmtoff (よく GCC で見られる) を含まない struct tm の厳密な実装を使用します。 厳密な実装は、ホストおよび SPU C++ ライブラリーの間の整合性のために必要です。 この API は struct tm とNetezza Performance ServerのDate データ型と Timestamp データ型との変換関数を提供します。 struct tm で使用するフィールドの数は Date または Timestamp 情報の保管に必要なフィールドの数より多いため、いくつかのフィールドは変換で無視されます。 次の表に、tm フィールドとNetezza Performance Serverデータ型の対応表を示します。

表 1. struct tm および 'Netezza Performance Serverデータ型プロパティの例
struct tm フィールド NZ DATE によって使用されるデータ NZ TIMESTAMP によって使用されるデータ
tm_sec (0 - 61) 無視 秒 (0 - 59)
tm_min (0 - 59) 無視
tm_hour (0 - 23) 無視 時間
tm_mday (1 - 31) 月間通算日
tm_mon (0 - 11) 1 月以降の月
tm_year 1900 年以降
tm_wday (0 - 6) 曜日 曜日 曜日
tm_yday (0 - 365) 年間通算日 年間通算日 年間通算日
tm_isdst 夏時間調整時刻のフラグ -1 に設定 -1 に設定

構造体tmとの間の変換では、Netezza Performance Serverはうるう秒を使用またはサポートしていません。 したがって、API によって書き出される struct tm の秒のフィールドが 59 を超えることはありません。 変換ルーチンが 60 または 61 の tm_sec フィールドを含む struct tm とともに呼び出される場合、API はエラーをスローします。

struct tm 形式からエンコードする場合、無視されるフィールドには任意のデータが入ります。 struct tm にデコードする場合、無視されるフィールドにはゼロの値が入ります。

tm_isdst フラグは入力では無視され、出力では、「不明」を表す -1 に設定されます。 tm_isdst を -1 に設定することは標準の範囲内ではありませんが、業界では一般的に行われる慣習です。 それ以外の点においてはすべて、API は ANSI C++ 標準でリストされているすべての time_t 仕様に準拠します。