OracleデータベースにTIMESTAMP(6)フィールドがあります。このフィールドの値は次の形式です
DD/MM/YYYY HH:MM:SS.000000000 PM
この値を現在のタイムスタンプに更新するにはどうすればよいですか?
[同様の質問へのリンク:] Oracleの日付値の更新
このリンクをたどりましたが、次のクエリの実行には非常に長い時間がかかります。
update table_name set start_time = to_char(to_date(start_time, 'yyyy/mm/dd-hh:mi:ss:ff3'), '2012/10/10-19:30:00:00') where column='Q'
timestamp は特定の時点であり、形式はありません。このようなフィールドを現在のタイムスタンプに更新するには、 SYSTIMESTAMP
または CURRENT_TIMESTAMP
(それぞれサーバーの日付/時刻とセッションの日付/時刻):
UPDATE your_table
SET your_column = systimestamp
WHERE ...
クエリに異常な時間がかかる場合(同じWHERE句を持つ同等のSELECTよりもはるかに長い)、最も可能性の高い原因は次のとおりです。
なぜあなたは
update table_name
set start_date = systimestamp
where column='Q'
テーブルにロックがあると思われる場合は、チェックするテーブルがいくつかあります。dba_locks
、v$session
、v$session_blockers
など。これらは、ユーザーがupdate
またはcommit
なしで偶発的なrollback
で何かをブロックした場合に役立ちますが、ブロックロックが存在するかどうかを確認できるはずです。アプリケーションのアーキテクチャ。すべてのシナリオを紙でシミュレートする必要があります。