代码之家  ›  专栏  ›  技术社区  ›  navderm

查找过期的记录

sql
  •  1
  • navderm  · 技术社区  · 5 年前

    我有一张桌子,其中两列是:

    ___________________________________________________
    |  CREATED_DATE (DATE TYPE)  |   TTL(MINS IN INT)  |
    |____________________________|_____________________|
    

    我在找过期的记录。

    到目前为止我知道了:

    SELECT CREATED_DATE, TTL, STR(TTL) as DIFF 
    FROM TABLE 
    WHERE 
        CREATED_DATE + interval  '30' minute 
            < CAST(sys_extract_utc(SYSTIMESTAMP) AS DATE)
    ;
    

    问题是:如果我想使用ttl而不是常量 '30' ,正在尝试:

    + interval '30' minute 
    

    到:

    + interval TTL minute
    

    或:

    + interval DIFF minute
    

    不起作用。

    如何使用 TTL (以分钟为单位)并将其添加到创建时间以查看数据是否已过期?

    可能有助于缩小答案范围的其他要点。

    1. 我将使用语句来清除finally(delete)而不是read(select)。所以我不想有多个阅读记录。

    2. 此语句进入hibernate在getsession().dowork内调用的工作类中的execute函数。

    谢谢!

    2 回复  |  直到 5 年前
        1
  •  1
  •   GMB    5 年前

    在SQL Server中,您还可以使用 DATEADD() :

    DATEADD(minute, ttl, created_date)
    
        2
  •  0
  •   Gordon Linoff    5 年前

    您可以尝试:

    + TTL * interval '1' minute