SCN_TO_TIMESTAMP
構文
目的
SCN_TO_TIMESTAMP
は、引数として、システム変更番号(SCN)と評価される数値を取り、そのSCNに関連付けられた概数のタイムスタンプを戻します。戻り値のデータ型はTIMESTAMP
です。このファンクションは、SCNに関連付けられたタイムスタンプを調べる場合に有効です。たとえば、このファンクションをORA_ROWSCN
疑似列とともに使用して、行への最新の変更にタイムスタンプを関連付けることができます。
ノート:
-
結果値の通常の精度は3秒です。
-
SCNとSCN生成時のタイムスタンプの関連は、一定期間データベースで記憶されます。この期間は、最大で自動調整されたUNDO保存期間(データベースが自動UNDO管理モードで実行されている場合)およびデータベース内のすべてのフラッシュバック・アーカイブの保存時間となりますが、120時間以上になります。関連が不要となるまでの経過時間には、データベースが開かれているときの時間のみが加算されます。
SCN_TO_TIMESTAMP
の引数に対して指定されたSCNが古すぎる場合は、エラーが戻されます。
関連項目:
「ORA_ROWSCN疑似列」および「TIMESTAMP_TO_SCN」を参照してください。
例
次の例では、ORA_ROWSCN
疑似列を使用して行への最新の変更のシステム変更番号を判断し、SCN_TO_TIMESTAMP
を使用してそのSCNをタイムスタンプに変換します。
SELECT SCN_TO_TIMESTAMP(ORA_ROWSCN) FROM employees WHERE employee_id = 188;
このような問合せを使用して、Oracleフラッシュバック問合せで使用するためにシステム変更番号をタイムスタンプに変換することもできます。
SELECT salary FROM employees WHERE employee_id = 188; SALARY ---------- 3800 UPDATE employees SET salary = salary*10 WHERE employee_id = 188; COMMIT; SELECT salary FROM employees WHERE employee_id = 188; SALARY ---------- 38000
SELECT SCN_TO_TIMESTAMP(ORA_ROWSCN) FROM employees WHERE employee_id = 188; SCN_TO_TIMESTAMP(ORA_ROWSCN) --------------------------------------------------------------------------- 28-AUG-03 01.58.01.000000000 PM FLASHBACK TABLE employees TO TIMESTAMP TO_TIMESTAMP('28-AUG-03 01.00.00.000000000 PM'); SELECT salary FROM employees WHERE employee_id = 188; SALARY ---------- 3800