PostgreSQLでは、current_timestamp()
関数は、タイムゾーンオフセットを含む現在の日付と時刻を返します。
返されるタイムスタンプは、現在のトランザクションの開始時刻に基づいています。
構文
次のいずれかの方法で使用できます。
current_timestamp
current_timestamp(x)
ここでx
はオプションの精度パラメータであり、結果はx
に丸められます。 秒フィールドの小数桁数。
精度パラメーター(最初の構文)がない場合、結果は使用可能な完全な精度になります。
例–完全な精度
これは、利用可能な完全な精度を使用して結果を示すための基本的な例です。
SELECT current_timestamp;
結果:
2020-07-01 15:42:35.630594+10
例–特定の精度
精度を指定する方法を示す例を次に示します。
SELECT current_timestamp(0);
結果:
2020-07-01 15:42:58+10
この例では、精度をゼロに指定しました。これは、小数秒が返されないことを意味します。
これは、小数秒の数を指定する別の例です。
SELECT current_timestamp(3);
結果:
2020-07-01 15:43:16.644+10
トランザクション
実際のタイムスタンプは、現在のトランザクションの開始時刻に基づいています。したがって、トランザクションが進行しても変化しません。
これにより、単一のトランザクションが「現在の」時刻の一貫した概念を持つことができるため、同じトランザクション内の複数の変更に同じタイムスタンプが付けられます。
これを示す例を次に示します。
BEGIN;
SELECT current_timestamp;
SELECT pg_sleep(5);
SELECT current_timestamp;
SELECT pg_sleep(5);
SELECT current_timestamp;
COMMIT;
psqlでそのトランザクションを実行したときの端末の完全な出力は次のとおりです。
postgres=# BEGIN; BEGIN postgres=# SELECT current_timestamp; current_timestamp ------------------------------- 2020-07-02 09:02:52.952669+10 (1 row) postgres=# SELECT pg_sleep(5); pg_sleep ---------- (1 row) postgres=# SELECT current_timestamp; current_timestamp ------------------------------- 2020-07-02 09:02:52.952669+10 (1 row) postgres=# SELECT pg_sleep(5); pg_sleep ---------- (1 row) postgres=# SELECT current_timestamp; current_timestamp ------------------------------- 2020-07-02 09:02:52.952669+10 (1 row) postgres=# COMMIT; COMMIT
pg_sleep()
であっても、3つの時間値はすべて同じです。 関数は、トランザクション内の各ステートメント間の実行を遅らせるために使用されました。
これは、statement_timestamp()
とは対照的です。 行う ステートメントごとに変更します。
ステートメント内の複数の呼び出し
また、ステートメントが進行しても変化しません。
\x
SELECT
current_timestamp,
pg_sleep(5),
current_timestamp,
pg_sleep(5),
current_timestamp;
結果(垂直出力を使用):
current_timestamp | 2020-07-02 09:04:03.413062+10 pg_sleep | current_timestamp | 2020-07-02 09:04:03.413062+10 pg_sleep | current_timestamp | 2020-07-02 09:04:03.413062+10
pg_sleep()
であっても、3つの時間値はすべて同じです。 関数は、current_timestamp
への各呼び出し間の実行を遅らせるために使用されました 。
これは、clock_timestamp()
とは対照的です。 関数、実行 ステートメントが進むにつれて変化します。
ちなみに、結果を少しコンパクトにするために、垂直出力(拡張出力とも呼ばれます)を使用しました。
\x
を使用して、psqlの拡張出力を切り替えることができます 。