データ型ヘルパー API は、time_t に加えて、共通の C++ struct tm 構造体もサポートします。 IBM® Netezza® Date 値と Timestamp 値を tm に変換することは可能ですが、Date 値と TimeTz 値を変換することはできません。これらの値には日付情報が含まれていないからです。
API は、追加フィールド tm_zone および tm_gmtoff (よく GCC で見られる) を含まない struct tm の厳密な実装を使用します。 厳密な実装は、ホストおよび SPU C++ ライブラリーの間の整合性のために必要です。 API は、struct tm と Netezza Date データ型および Timestamp データ型の間の変換のための関数を提供します。 struct tm で使用するフィールドの数は Date または Timestamp 情報の保管に必要なフィールドの数より多いため、いくつかのフィールドは変換で無視されます。 以下の表に、tm フィールドおよびその Netezza データ型の対応物の間のマッピングをリストします。
| 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 に設定 |
struct tm との間の変換において、Netezza はうるう秒を使用またはサポートしません。 したがって、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 仕様に準拠します。