更新系统日期 - Oracle中10分钟

我需要更新日期列,使用sysdate但过去10分钟。有什么办法吗?

请帮忙。

0
额外 编辑
意见: 1
@ShannonSeverance你真的很棒,你发现了这个问题。非常感谢。
额外 作者 Vaandu,
我更新了单行并在更新后提交,并尝试使用to_char函数进行选择。
额外 作者 Vaandu,
我试过这个。但没有工作。 update table set modified_date =(sysdate - 10 /(24 * 60))其中property_name ='xxx';
额外 作者 Vaandu,
定义“没有工作”。你有错误吗?如果是这样,有什么错误?它是否更新了预期的行数?你为什么不相信这是正确的?
额外 作者 Justin Cave,
该表是否具有将 modified_date 设置为 sysdate 的更新触发器?这将覆盖 update 语句中使用的值。
额外 作者 Shannon Severance,
“触发器”会导致长期的维护头痛,触发器只是一小部分代码,并不直接由任何东西运行 - 它们只是“发生”作为其他操作的副作用,因为它们的工作是作为副作用完成的,人们经常忘记触发器在那里(并且检查所有副作用的代码是困难的,如果不是不可能的话)。“ - Tom Kyte oracle.com/technetwork/issue-archive/2008/08-sep/… 。 OTOH,设置更新日期的更新触发器是我将要使用触发器的少数几个地方之一。
额外 作者 Shannon Severance,

2 答案

像这可能

select sysdate - 10/(24*60) from dual;
0
额外
什么没有用?告诉我你尝试的确切查询;可能会帮助更多。
额外 作者 Rahul,
检查表中的 modified_date 列并验证它是否真的发生了变化。
额外 作者 Rahul,
@Vanathi:你可能没有正确显示时间部分。更改您的NLS设置以查看小时,分钟和秒钟
额外 作者 a_horse_with_no_name,
非常感谢,现在问题已经解决。
额外 作者 Vaandu,
我检查了列数据,它只是更新到sysdate。
额外 作者 Vaandu,
这个。 `update table set modified_date =(sysdate - 10 /(24 * 60))where property_name ='xxx';`
额外 作者 Vaandu,
我已经尝试过了,但没有奏效。感谢您的回应。
额外 作者 Vaandu,
@Vanathi - 为什么你不相信它的工作?
额外 作者 Justin Cave,
我将重复@ShannonSeverance先前提出的问题:有没有可能为您设置MODIFIED_DATE的表上的任何UPDATE触发器?要在您的表上查找此类触发器,请尝试使用 SELECT * FROM USER_TRIGGERS WHERE TRIGGERING_EVENT LIKE'%UPDATE%'AND TABLE_OWNER ='YOUR_USER'AND TABLE_NAME ='YOUR_TABLE'。然后通过它们查看是否有任何触发器改变了修改日期列。祝你好运。
额外 作者 Bob Jarvis,
UPDATE the_table
   SET the_column = current_timestamp - interval '10' minute
WHERE pk = 42;

It certainly works, see here: http://sqlfiddle.com/#!4/a1986/2

0
额外
@Vanathi:没有工作不是有效的Oracle错误消息。而且即使你想要 10分钟,你的发言也会提前20分钟
额外 作者 a_horse_with_no_name,
它没有工作。 update table set modified_date =(current_timestamp - interval'20'minute)where property_name ='xxx';
额外 作者 Vaandu,
非常感谢,我发现了这个问题。
额外 作者 Vaandu,