JDBC接続のタイムゾーン設定
JDBC接続を作成する際には、データベースのタイムゾーンも設定する必要があります。これにより、日付、日時、時刻の列がデータベースに応じて変換/解釈されるため、どのタイムゾーンにいても、データにローカルタイムゾーンオフセットを誤って取り込むことなく共同作業を行うことができます。
指定したJDBC接続のタイムゾーンを設定するには、Advancedタブに移動し、ドロップダウンメニューからタイムゾーンを選択します。
デフォルトでは、UTCが選択されています。特別なタイムゾーンは、SYSTEM(接続が使用されるマシンのシステムタイムゾーンを使用する)およびDon’t set(タイムゾーンを明示的に設定せず、JDBCドライバ自体に管理させる)です。9.6より前に作成されたJDBC接続では、互換性を保つために値がDon’t setに設定されます。
注意: 異なるマシン間で動作が一貫しない(同じマシンで実行されている場合もある)ため、Don’t set設定を使用することは推奨されません。この設定は互換性のためにのみ存在します。
残念ながら、データベースやJDBCドライバによっては、日付処理がうまく機能しないため、詳細についてはデータベースベンダーのドキュメントを参照してください。以下の表は、一般的なデータベースに対するテストの概要と、執筆時点での動作です。
SQL System | Date | Time | Datetime |
---|---|---|---|
MySQL (公式ドライバ) | |||
MySQL (MariaDBドライバ*) | システムタイムゾーンはデータベースタイムゾーンである必要があります | ||
MSSQL (公式ドライバ*) | |||
MSSQL (jtdsドライバ*) | ( ) datetimeに変換 |
( ) datetimeに変換 |
|
Netezza (公式ドライバ) | 書き込み: システムタイムゾーンはデータベースタイムゾーンである必要があります |
書き込み: システムタイムゾーンはデータベースタイムゾーンである必要があります |
書き込み: システムタイムゾーンはデータベースタイムゾーンである必要があります |
Oracle (公式ドライバ*) | 書き込みにはUTCが必要 | ||
PostgreSQL (公式ドライバ*) | 同じタイムゾーンで書き込み/読み取り | 同じタイムゾーンで書き込み/読み取り | |
Vertica (公式ドライバ) |
* Altair AI Studioに付属