我可以算第二天和前一天一样吗?

时间:2018-04-03 03:44:57

标签: sql oracle

我想把上午6点到12点30分(第二天)算作一个约会。 出于某种原因,我无法从前一天的第二天获取这些数据。 这可能吗?

(CASE WHEN TO_CHAR(ITD.TRAN_DATE,'HH24MI')>='0600' THEN TO_CHAR(ITD.TRAN_DATE,'HHAM')
WHEN TO_CHAR(TRUNC(ITD.TRAN_DATE+1),'HH24MI')<='0030' THEN TO_CHAR(ITD.TRAN_DATE,'HHAM')
END)

我正在使用此案例陈述将第二天的所有内容都计入前一天的上午12:30。设置日期参数时,它不起作用。

2 个答案:

答案 0 :(得分:0)

您的问题的答案是

伪代码是:

IF (TRAN_TIME <= 00:30 AND TRAN_DATE = TODAY + 1) OR
   (TRAN_TIME >= 06:00 AND TRAN_DATE = TODAY) 
THEN ...

您目前正在做的是,在比较时间之前,先使用现有日期并添加一个日期,并且不会返回您期望的日期。

答案 1 :(得分:0)

使用INTERVAL数据类型向日期添加偏移量:

SELECT *
FROM   itd
WHERE  ITD.TRAN_DATE
         BETWEEN TRUNC( :date_to_match ) + INTERVAL '00 06:00' DAY TO MINUTE
         AND     TRUNC( :date_to_match ) + INTERVAL '01 12:30' DAY TO MINUTE;