PolarDB for PostgreSQL (Oracle互換) には、現在の日付と時刻に関連する値を返す多くの関数があります。
これらの関数はすべて、現在のトランザクションの開始時間に基づいて値を返します。
- CURRENT_DATE
- CURRENT_TIMESTAMP
- LOCALTIMESTAMP
- LOCALTIMESTAMP (精密)
CURRENT_DATE関数は、現在のトランザクションの開始時刻に基づいて現在の日付と時刻を返します。 CURRENT_DATEがトランザクション内で複数回呼び出された場合、CURRENT_DATEの値は変更されません。
DUALからCURRENT_DATEを選択します。
日付
-----------
06-AUG-07 CURRENT_TIMESTAMP関数は、現在の日付と時刻を返します。 SQLステートメントから呼び出されると、この関数はステートメント内の各オカレンスに対して同じ値を返します。 トランザクション内の複数のステートメントから呼び出された場合、この関数はオカレンスごとに異なる値を返すことがあります。 関数から呼び出された場合、この関数は、呼び出し元のcurrent_timestampによって返された値以外の異なる値を返すことがあります。
SELECT CURRENT_TIMESTAMP、デュアルからのCURRENT_TIMESTAMP;
current_timestamp | current_timestamp
---------------------------------- + ----------------------------------
02-SEP-13 17:52:29.261473 + 05:00 | 02-SEP-13 17:52:29.261474 + 05:00 LOCALTIMESTAMP関数には、オプションで精度パラメータを割り当てることができます。 このパラメーターを使用すると、結果は秒フィールドの数分の1桁に丸められます。 精度パラメータが割り当てられていない場合、結果は完全な利用可能な精度に与えられる。
DUALからLOCALTIMESTAMPを選択します。
timestamp
------------------------
06-AUG-07 16:11:35.973
(1行)
DUALからLOCALTIMESTAMP (2) を選択します。
timestamp
-----------------------
06-AUG-07 16:11:44.58
(1行) 上記の関数は、現在のトランザクションの開始時刻を返します。 それらの値はトランザクション中に変更されません。 これは機能と見なされます。目的は、単一のトランザクションが「現在」時間の一貫した概念を持つことを可能にすることです。 したがって、同じトランザクション内の複数の変更は、同じタイムスタンプを有する。 他のデータベースシステムは、これらの値をより頻繁に使用できる。