我们有一个新的软件包,该软件包使该公司可以编写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是日期/时间字段,可能是我们目前尚不完全了解的问题的一部分。任何帮助将不胜感激。
该表达式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)
| 归档时间: |
|
| 查看次数: |
35 次 |
| 最近记录: |