【问题标题】:Oracle SQL query for subtracting time from timestamp用于从时间戳中减去时间的 Oracle SQL 查询
【发布时间】:2014-05-29 13:11:07
【问题描述】:

我在 oracle 中构建查询时遇到问题。我有一个包含“DATE_CREATE”列的表,它的类型为“TIMESTAMP”。一个值的示例是:

2012-10-20 05:43:47:001000

我想构建一个 where 子句,用于选择创建列在 15 分钟前更新的行。现在我有一个这样的查询(它不返回任何行,但它应该):

SELECT DATE_CREATE,ID
FROM TABLE
WHERE DATE_CREATE >= CURRENT_TIMESTAMP - interval '15' minute

请帮忙...

【问题讨论】:

  • 抛出的错误是什么?
  • 你真的有一个名为CREATE的专栏吗?这是一个保留字,您需要引用它才能使用它"CREATE"。一般来说,您应该避免使用保留字作为对象名称 - 正是出于这个原因
  • 不,我只是举了一个例子,它叫做“DATE_CREATE”。而且这个查询不会引发错误(对不起,我搞混了),这个查询没有显示任何结果 - 实际上有 - 超过 100 个......如果我尝试使用自定义日期,我会收到一个错误,比如说: “WHERE DATE_CREATE >= '2012-10-20 05:30:00:000000' - 然后我得到这个:ORA-01861:文字与格式字符串不匹配

标签: sql oracle time timestamp intervals


【解决方案1】:

试试这个:

SELECT DATE_CREATE,ID
FROM TABLE
WHERE DATE_CREATE >= CURRENT_TIMESTAMP - NUMTODSINTERVAL(15, 'MINUTE')

【讨论】:

  • 这个有效!谢谢你。但我想知道为什么我的返回零行?区别在哪里?
  • 当我无法对会议记录进行硬编码时,我更喜欢这个版本。传递像“15”这样的带引号的数字很痛苦。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 2011-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多