問題:
PostgreSQLデータベースからタイムゾーン情報を使用して現在の日付と時刻を取得したい。
解決策:
CURRENT_TIMESTAMPまたはNOW()のいずれかを使用して、タイムゾーンオフセットを使用して現在の日付と時刻を取得します。
SELECT CURRENT_TIMESTAMP ;
クエリの結果は次のとおりです。
2019-09-15 13:13:12.118432+02
ディスカッション:
CURRENT_TIMESTAMP
現在の日付、時刻、およびタイムゾーンのオフセットを返します(PostgreSQLが実行されているマシンの日付、時刻、およびタイムゾーンを使用)。これは、'YYYY-MM-DD hh:mm:ss.nnnnnn +/- tz'の値として返されます。 フォーマット。この形式:
- YYYY は4桁の年です。
- MM は2桁の月です。
- DD 月の2桁の日です。
- hh は2桁の時間です。
- mm 2桁の分です。
- ss は2桁の秒です。
- nnnnnn 0から6までの小数秒数(つまり、精度)を定義します。
- + tz または-tz UTCからのプラスまたはマイナスのタイムゾーンオフセットです。
お気づきのとおり、この関数には括弧がありません。ただし、特定の精度で日付と時刻を表示する場合は、オプションの整数引数を使用できます。これは、秒の小数部とタイムゾーンオフセットを含む日付と時刻を返します。この引数は0から6の範囲でなければなりません。 0は小数秒ではなく、1は小数秒(たとえば、小数点以下1桁)などです。次の例を見てください:
SELECT CURRENT_TIMESTAMP(3) ;
クエリの結果は次のとおりです。
2019-09-15 13:01:51.142+02
CURRENT_TIMESTAMP関数の引数として3を指定したため、この結果には3桁の小数秒が含まれています。タイムゾーンオフセットは引き続き最後に表示されます。
この関数によって返される時間は、トランザクション中または単一のクエリ中に変更されません。常にトランザクションが開始された時刻です。
NOW()はCURRENT_TIMESTAMP
に似ています 関数と同じ結果を返します。違いは、CURRENT_TIMESTAMP
はSQL標準関数ですが、NOW()はPostgreSQLに固有です。
SELECT NOW() ;
クエリの結果は次のとおりです。
2019-08-27 12:18:55.324145+02
NOW()関数には括弧が必要であることに注意してください。ただし、それらを空のままにして、デフォルト値を取得することができます。
CURRENT_TIMESTAMPとNOW()は、タイムスタンプを返します。 データ型。