更改系统日期建议

0 sql oracle

我们有一个新的软件包,该软件包使该公司可以编写SQL代码放在Query门户上。我们有一些报告希望将前一天作为选择之一进行编码。如果报表是在星期一运行的,我们要自动选择上一个星期五作为选择日期,我们有ORACLE SQL DEVELOPER 4.1。我们尝试使用的代码如下:

SELECT ALERT_CD,ALERT_KEY,CHG_DTM,
CASE  
WHEN TO_CHAR(SYSDATE,'fmday')='sunday' 
THEN SYSDATE-2 
WHEN TO_CHAR(SYSDATE,'fmday')='monday' 
THEN SYSDATE-3 
ELSE SYSDATE-1 
END "change" 
FROM SG00400T 
WHERE ALERT_CD='AUTO'
and CHG_DTM >= to_date('SYSDATE', 'mm/dd/yyyy')
Run Code Online (Sandbox Code Playgroud)

我们收到的错误:

SELECT ALERT_CD,ALERT_KEY,CHG_DTM,
CASE  
WHEN TO_CHAR(SYSDATE,'fmday')='sunday' 
THEN SYSDATE-2 
WHEN TO_CHAR(SYSDATE,'fmday')='monday' 
THEN SYSDATE-3 
ELSE SYSDATE-1 
END "change" 
FROM SG00400T 
WHERE ALERT_CD='AUTO'
and CHG_DTM >= to_date('SYSDATE', 'mm/dd/yyyy')
Run Code Online (Sandbox Code Playgroud)

CHG_DTM是日期/时间字段,可能是我们目前尚不完全了解的问题的一部分。任何帮助将不胜感激。

a_h*_*ame 6

该表达式to_date('SYSDATE', 'mm/dd/yyyy')正在尝试将字符串常量'SYSDATE'转换为日期-这是行不通的。

但是永远不要调用to_date()已经是日期的值。这将首先将date值转换varchar为Just,varchar然后再将其转换回date原来的。

因此,该to_date()功能在开始的地方是错误的。您最有可能想要:

and CHG_DTM >= trunc(SYSDATE)
Run Code Online (Sandbox Code Playgroud)