質問
CSVファイルのデータをSnowflakeのTIMESTAMP_NTZ型カラムへロードする際、小数点以下6桁の秒数を含むTIMESTAMP型データ(例:2025-12-13 12:34:58.123456)を日時のパースロジック `yyyy-MM-dd HH:mm:ss.SSSSSS` で指定しても時刻がずれます。これは仕様ですか?
回答
これはHULFT Squareの仕様による動作です。
HULFT Squareの日時フォーマットにおける `S` は「ミリ秒」を表します。そのため、`yyyy-MM-dd HH:mm:ss.SSSSSS` と指定してもマイクロ秒(小数点以下6桁)の指定にはなりません。
例えば `2025-12-13 12:34:58.123456` の場合、小数点以下の `123456` がミリ秒として解釈されることで、元の値から時刻がずれます。
また、HULFT SquareのSnowflakeコネクターはマイクロ秒に対応していません。
対応策は以下の2つです。
1. ミリ秒まで(小数点以下3桁)で問題ない場合は、日時のパースロジックのフォーマットに `yyyy-MM-dd HH:mm:ss.SSS` を使用する。
2. 小数点以下6桁まで保持する必要がある場合は、HULFT Square上で日時型へパースせず文字列としてSnowflakeへ連携し、Snowflake側で `TIMESTAMP_NTZ` 型へ変換する。
補足
マイクロ秒に対応しているコネクターは以下のとおりです。
- DB2コネクター
- Oracleコネクター
- PostgreSQLコネクター
- SQL Serverコネクター
参考リンク:
コメント
0件のコメント
記事コメントは受け付けていません。