psql
pg-promise を実行しているのと同じマシンで実行していますか?
ドキュメントからtimestamp with timezone
タイム ゾーン付きタイムスタンプの場合、内部に保存される値は常に UTC (Universal Coordinated Time、グリニッジ標準時 (GMT) として知られています) です。明示的なタイム ゾーンが指定されている入力値は、そのタイム ゾーンの適切なオフセットを使用して UTC に変換されます。入力文字列にタイム ゾーンが指定されていない場合は、システムのTimeZone パラメータで指定されたタイム ゾーンにあると見なされ、タイム ゾーンのオフセットを使用して UTC に変換されます。
タイムゾーン値を含むタイムスタンプが出力される場合、常に UTC から現在のタイムゾーン ゾーンに変換され、そのゾーンの現地時間として表示されます。別のタイムゾーンで時刻を表示するには、タイムゾーンを変更するか、AT TIME ZONE構文を使用します (セクション 9.9.3 を参照)。
TimeZone
そのため、タイムゾーンは UTC で保存され、そのドキュメントからパラメーターに基づいて取得されます (わずかにクリーンアップされています)。
TimeZone
構成パラメータを設定できます。
- ファイルpostgresql.confで
- 第 19 章で説明されているその他の標準的な方法のいずれかで。
- SQL コマンド SET TIME ZONE は、セッションのタイム ゾーンを設定します。これは、より SQL 仕様と互換性のある構文を使用した SET TIMEZONE TO の代替スペルです。
- PGTZ 環境変数は、libpq クライアントが接続時に SET TIME ZONE コマンドをサーバーに送信するために使用されます。
だから、いつでも、
var sql = `SELECT date AT TIME ZONE '+02' from ro WHERE id = 1366`;
Dbh.odb.any(sql)
.then(ro => {
console.log(ro);
res.ok(ro)
})
または、クライアント、セッション、またはサーバーのタイムゾーンを設定します。
timezone
ここで潜在的な値を見つけることができます
SELECT * FROM pg_timezone_names();