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データ型の対応表を示します。
| 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 仕様に準拠します。