我想把上午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。设置日期参数时,它不起作用。
答案 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;