更新过去3天的记录

时间:2018-08-13 07:11:08

标签: sql oracle

在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); 

1 个答案:

答案 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);