【问题标题】:Increments of a date using Oracle SQL使用 Oracle SQL 的日期增量
【发布时间】:2011-11-09 00:23:06
【问题描述】:

我们每天晚上使用 SQL 发送邮件。为此,我们特别希望每 3 天发送一次提醒,但我完全不知道如何做到这一点,或者是否有可能?

这是我的代码:

SELECT *
FROM   table
WHERE  status = 'pending'
       AND ( date_created = sysdate - 3
              OR date_created = sysdate - 6
              OR date_created = sysdate - 9 )  

某种效果,但是一种更好的编码方式,也是一种更有效的方式,不需要我一直到数百个! ^_^

谢谢

【问题讨论】:

  • 请问sysdate - date_created是3的倍数吗?

标签: sql oracle date increment


【解决方案1】:

试试

SELECT *
FROM table
WHERE status = 'pending'
AND MOD(sysdate-date_created, 3) = 0

关于 Oracle MOD 的信息:http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/functions088.htm

【讨论】:

  • 如果时间不重要,您可能需要使用 TRUNC:MOD( (trunc(sysdate, 'DD') - trunc(date_created, 'DD')), 3 ) = 0
  • 这个很完美,会和上面提到的trunc函数一起使用,非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 2019-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多