Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将Oracle时间戳更新为当前日期_Sql_Oracle_Timestamp_Sql Update - Fatal编程技术网

Sql 将Oracle时间戳更新为当前日期

Sql 将Oracle时间戳更新为当前日期,sql,oracle,timestamp,sql-update,Sql,Oracle,Timestamp,Sql Update,我在Oracle db中有一个时间戳(6)字段。此字段的值的格式为 DD/MM/YYYY HH:MM:SS.000000000 PM 如何将此值更新为当前时间戳 [类似问题的链接:] 我遵循了这个链接,但下面的查询需要很长时间才能执行 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='

我在Oracle db中有一个时间戳(6)字段。此字段的值的格式为

DD/MM/YYYY HH:MM:SS.000000000 PM
如何将此值更新为当前时间戳

[类似问题的链接:]

我遵循了这个链接,但下面的查询需要很长时间才能执行

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'
A是一个时间点,它没有格式。要将此字段更新为当前时间戳,请使用或(分别是服务器的日期/时间和会话的日期/时间):

如果查询花费了异常的时间(比具有相同WHERE子句的可比SELECT长得多),最可能的原因是:

  • 您正在更新的行被另一个会话锁定(对这些行执行SELECT FOR UPDATE NOWAIT将确保您拥有该锁定)
  • 您有执行额外工作的触发器
  • 您正在更新由非索引外键引用的列
  • 你为什么不

    update table_name 
    set start_date = systimestamp 
    where column='Q'
    

    如果您怀疑表上有锁,则需要检查一些表:
    dba_锁
    v$session
    v$session_拦截器
    等。当用户在没有
    提交
    回滚的情况下意外地
    更新
    阻止某个内容时,这些拦截器非常有用,但您应该能够看到是否存在阻止应用程序体系结构锁定的can。您应该在纸上模拟所有场景。

    令人惊讶的是,此命令从未返回。起初我认为这是Sql开发人员的问题。所以我尝试使用sqlplus命令行。它的行为相同。有什么线索吗?@sandyr commit/rollback或kill在此表的行上有锁的所有会话。如果列='Q'
    中有几行
    ,则@VincentMalgrat是对的,这些行上有锁。如果表非常大,并且行数相当大,您应该等待。Oracle必须在磁盘上写入数据。这不是偶然发生的。一个程序轮询表不断地寻找要处理的记录。我认为这个程序锁定了整个表。哪个系统表在执行行级锁定或表锁定时存储信息?有一些表:dba_锁、v$session、v$session_拦截器等。
    
    update table_name 
    set start_date = systimestamp 
    where column='Q'