【问题标题】:Update Sysdate - 10 min in Oracle更新 Sysdate - Oracle 中的 10 分钟
【发布时间】:2012-05-31 05:59:42
【问题描述】:

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

请帮忙。

【问题讨论】:

  • 我试过这个。但没有用。更新表集 modified_date = (sysdate - 10/(24*60)) where property_name = 'xxx';
  • 定义“无效”。你收到错误了吗?如果是这样,什么错误?它是否更新了预期的行数?你为什么不相信它是正确的?
  • 我更新了单行并在更新后提交并尝试使用 to_char 函数进行选择。
  • 表是否有将modified_date 设置为sysdate 的更新触发器?这将覆盖update 语句中使用的值。
  • @ShannonSeverance 你真的很棒,你找到了问题。非常感谢。

标签: oracle sysdate


【解决方案1】:
UPDATE the_table
   SET the_column = current_timestamp - interval '10' minute
WHERE pk = 42;

它确实有效,请参阅此处:http://sqlfiddle.com/#!4/a1986/2

【讨论】:

  • 它没有用。 update table set modified_date = (current_timestamp - interval '20' minute) where property_name = 'xxx';
  • @Vanathi:没有工作 不是有效的 Oracle 错误消息。即使您想要 10 分钟,您的声明也会提前 20 分钟
  • 非常感谢,我找到了问题。
【解决方案2】:

大概是这样

select sysdate - 10/(24*60) from dual;

【讨论】:

  • 我已经试过了,但是没有用。感谢您的回复。
  • 什么不起作用?告诉我您尝试的确切查询;可能会提供更多帮助。
  • 这个。 ` update table set modified_date = (sysdate - 10/(24*60)) where property_name = 'xxx';`
  • 检查表中的modified_date 列并验证它是否真的发生了变化。
  • 我将重复@ShannonSeverance 之前提出的问题:有问题的表上是否有任何可能为您设置 MODIFIED_DATE 的 UPDATE 触发器?要在您的桌子上找到此类触发器,请尝试SELECT * FROM USER_TRIGGERS WHERE TRIGGERING_EVENT LIKE '%UPDATE%' AND TABLE_OWNER = 'YOUR_USER' AND TABLE_NAME = 'YOUR_TABLE'。然后检查它们,看看是否有任何触发器改变了 MODIFIED DATE 列。祝你好运。
猜你喜欢
  • 1970-01-01
  • 2018-06-02
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
  • 1970-01-01
  • 2014-09-04
  • 2015-12-13
相关资源
最近更新 更多