首页 > 解决方案 > 在 oracle 查询中表示日期的更好方法

问题描述

有没有更好的方法来以更好的方式重新启动下面的oracle查询,下面是查询

UPDATE ABC SET STATUS='CLEAN' 
 WHERE STATUS in ('RUNNING','HALT') 
   AND START_DATE BETWEEN to_date(to_char(sysdate-1 , 'MM/DD/YYYY'),'MM/DD/YYYY') 
                      and to_date(to_char(sysdate-4 , 'MM/DD/YYYY'),'MM/DD/YYYY');

标签: oracle

解决方案


虽然是正确的,但我不喜欢将 aDATE转换为 aCHAR并再次转换为 DATE。注意sysdate-1大于sysdate-4,因此您的条件永远不会为真。试试这个:

START_DATE BETWEEN TRUNC(sysdate-4) AND TRUNC(sysdate-1);

推荐阅读