尝试在下面简单解释一下。
简单的if语句(实际上就像
if sysdate >= trunc(sysdate)+5/24
),设置要在查询中使用的参数
if 2>=1 then
define ThisTime = trunc(sysdate)-1
else
define ThisTime = trunc(sysdate)
select *
from table
where time >= &ThisTime
以上方法无效,我想知道是否有可能?不幸的是,它是一个静态监视查询,该查询在itrs中从sqltoolkit运行,我想不出另一种选择过渡时间的方法。
答案 0 :(得分:1)
如果您尝试从凌晨5点之前运行的昨天获取数据,而从今天凌晨5点之后运行的数据获取,那么您可以在过滤器截断前将其调整5个小时:
BOSM00645241A:docker_home i858847$ docker build -t my-test-image .
Sending build context to Docker daemon 78.02MB
Step 1/2 : FROM ubuntu:16.04
16.04: Pulling from library/ubuntu
7b8b6451c85f: Pull complete
ab4d1096d9ba: Pull complete
e6797d1788ac: Pull complete
e25c5c290bde: Pull complete
Digest: sha256:e547ecaba7d078800c358082088e6cc710c3affd1b975601792ec701c80cdd39
Status: Downloaded newer image for ubuntu:16.04
---> a51debf7e1eb
Step 2/2 : RUN mkdir -pv /app
---> Running in 9bc2264df0de
mkdir: created directory '/app'
Removing intermediate container 9bc2264df0de
---> f0b0c0a4e266
Successfully built f0b0c0a4e266
Successfully tagged my-test-image:latest
BOSM00645241A:docker_home i858847$ docker run -it --name my-test-image --rm bash
Unable to find image 'bash:latest' locally
latest: Pulling from library/bash
4fe2ade4980c: Pull complete
57ab8b6a12dc: Pull complete
f5cb10ae9311: Pull complete
Digest: sha256:360cdc0a48755a2701ed82156cd27d9e9f1a1f52c84b3b03a794d78f115c7e0f
Status: Downloaded newer image for bash:latest
bash-4.4# ls
bin dev etc home lib media mnt proc root run sbin srv sys tmp usr var
bash-4.4#
例如在04:59跑步时,select *
from your_table
where time >= trunc(sysdate - 5/24)
and time < trunc(sysdate + 19/24)
昨天的结果为23:59,sysdate - 5/24
今天的结果为23:59;删减昨天午夜和今天午夜的那些东西。
例如在05:01运行时,sysdate + 19/24
今天的计算结果为00:01,sysdate - 5/24
明天的计算结果为00:01;截断今天午夜和明天午夜的那些东西。
答案 1 :(得分:0)
即使在大多数情况下执行效果都很差(我倾向于避免使用OR条件),您也可以将决策实施为OR:
select *
from table
where (sysdate >= trunc(sysdate)+5/24 and time >= trunc(sysdate))
or (sysdate < trunc(sysdate)+5/24 and time >= trunc(sysdate) - 1)