当前时间戳内的日期 - IBM DB2

时间:2016-02-17 16:56:24

标签: sql db2

我在表格中有一个列(ROW_UPDATE_TIME),它会在此表格中发生更新时存储时间戳

我想知道如何检查时间戳今天的行。 这就是我现在正在使用的,但我认为这不是一个漂亮的解决方案:

SELECT
    *
FROM
    TABLE
WHERE
    ROW_UPDATE_TIME BETWEEN (CURRENT TIMESTAMP - 1 DAY) AND (CURRENT TIMESTAMP + 1 DAY);

是否有更好的解决方案,例如:ROW_UPDATE_TIME = CURRENT DATE,或类似的东西?

2 个答案:

答案 0 :(得分:0)

找到它:

SELECT
    *
FROM
    TABLE
WHERE
    DATE(ROW_UPDATE_TIME) = CURRENT DATE;

答案 1 :(得分:0)

您提供的第一个版本不会返回您期望的结果,因为您将从今天或明天获得结果时间戳,具体取决于您运行它的小时数。

使用以下查询获取今天的结果:

SELECT
    *
FROM
    table
WHERE
    row_update_time
        BETWEEN TIMESTAMP(CURRENT_DATE,'00:00:00')
        AND TIMESTAMP(CURRENT_DATE,'23:59:59')

避免将函数应用于where子句(DATE(row_update_time) = CURRENT_DATE)中比较的列。这将导致优化器针对每一行运行该函数,只是为了分配您需要的数据。它可能会大大减慢查询速度。尝试对这两个版本进行解释,你会看到我的意思。