我在Oracle db中有一个TIMESTAMP(6)字段。该字段的值采用格式
DD/MM/YYYY HH:MM:SS.000000000 PM
如何将此值更新为当前时间戳?
[指向类似问题的链接:] update date value in 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'
答案 0 :(得分:15)
timestamp是一个时间点,它没有格式。要将此类字段更新为当前时间戳,请使用SYSTIMESTAMP
或CURRENT_TIMESTAMP
(分别为服务器的日期/时间和会话的日期/时间):
UPDATE your_table
SET your_column = systimestamp
WHERE ...
如果查询花费了异常的时间(比具有相同WHERE子句的类似SELECT长得多),最可能的原因是:
答案 1 :(得分:3)
为什么你不只是
update table_name
set start_date = systimestamp
where column='Q'
如果您怀疑桌面上有锁,则需要检查一些表:dba_locks
,v$session
,v$session_blockers
等。当用户意外阻止某些内容时,这些表非常有用update
没有commit
或rollback
,但您应该能够看到是否存在阻止来自应用程序体系结构的锁定。你应该只是在纸上模拟所有场景。