在EXIT_DATE日期的列中,我有以下有关更新基础的查询,现在请告知。
我有以下查询。假设今天是8月13日,因此我想从8月10日,8月11日和8月12日开始更新所有记录,因为时间戳也很准确。
换句话说,我想更新3天前的所有记录。
请告知此查询是否正确,否则可以改进以下实现。
UPDATE CTR_QWE SET STATUS = 'COMPLETED'
WHERE STATUS IN ('N','P')
AND EXIT_DATE >= TRUNC(SYSDATE-3)
AND EXIT_DATE < TRUNC(SYSDATE);
答案 0 :(得分:0)
代码很好。我只建议您还添加截断EXIT_DATE的功能,因为您已经在截取与之比较的日期。
在这样的情况下,如果您需要为同一日期写一个时间间隔,则最好使用BETWEEN AND。那一点在输出上并没有真正的区别,但是更好的可读性。
所以:
UPDATE CTR_QWE
SET STATUS = 'COMPLETED'
WHERE STATUS IN ('N', 'P')
AND TRUNC(EXIT_DATE) BETWEEN TRUNC (SYSDATE - 3) AND TRUNC (SYSDATE - 1);