【问题标题】:Dynamic Timestamp DB2 SQL动态时间戳 DB2 SQL
【发布时间】:2013-01-22 19:54:54
【问题描述】:

使用 DB2 SQL

我想查询从昨天 2:00 开始的记录。我想要一个动态表达式,让我不必在运行查询之前手动输入当前日期。 created_datetime 属性是时间戳数据类型。

例如:

select record_key, other_stuff
from table
where created_datetime > "2 o'clock PM yesterday"

这种动态时间戳比较甚至可能吗?最终,我希望能够做一个时间窗口,这会变得很复杂!

select count(1)
from table
where created_datetime between "2 o'clock PM yesterday" and "2 o'clock PM today"

我熟悉当前日期,但我正在尝试概念化我将如何利用它。以下内容让我很接近,但它包括运行查询前 24 小时的所有内容。

select count(1)
from table
where created_datetime between (currentdate - 1 day) and (currentdate @ 2 o'clock PM)

我知道这是一些非常基本的领域,发布这个问题我感到内疚,但我的研究到目前为止还没有为我找到任何结果。我感谢为我花费的每一分时间。

【问题讨论】:

    标签: sql datetime db2


    【解决方案1】:

    试试这些

    select record_key, other_stuff
    from table
    where created_datetime > CURRENT DATE - 10 HOURS
    
    select count(1)
    from table
    where created_datetime between (CURRENT DATE - 10 HOURS) and (CURRENT DATE + 14 HOURS)
    
    select count(1)
    from table
    where created_datetime between (CURRENT DATE - 1 DAYS) and (CURRENT DATE + 14 HOURS)
    

    来自 IBM Dev Works 库:DB2 Basics: Fun with Dates and Times

    那里有很多样本。

    例如

    您还可以使用执行日期和时间计算,因为缺少 更好的术语,英语:

    current date + 1 YEAR 
    current date + 3 YEARS + 2 MONTHS + 15 DAYS 
    current time + 5 HOURS - 3 MINUTES + 10 SECONDS 
    

    【讨论】:

    • 我不敢相信我没有意识到当前日期可以这样使用。根据我运行查询的日期,它的行为很像一个常数,然后我可以静态地倒退 10 小时并前进 14 小时。
    • 我是 SQL Server 人,但我也喜欢它,它的语法很棒。
    【解决方案2】:

    在 where 子句中使用 Timestamp 选项试试这个。

    以下示例用于查询过去 24 小时之间的数据。

    select  
       timestamp(CURRENT date - 1 days,(CURRENT time - 24 hours)),
       timestamp(CURRENT date,CURRENT time ) 
    FROM 
       sysibm.sysdummy1;
    

    【讨论】:

      猜你喜欢
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      相关资源
      最近更新 更多