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