希望将半小时的采访安排到下一个星期日。我的查询有一个列(标题为“交易间隔”),其中包含日期和时间戳,例如02/03/2020 08:30
和29/02/2020 19:00
。
我想生成一个标题为Week Ending的新列,将这些日期/时间四舍五入到下一个星期日。
因此对于日期29/02/2020 19:00
,它将四舍五入并返回01/03/2020 00:00
;对于日期02/03/2020
,它将四舍五入到08/03/2020 00:00
谢谢
答案 0 :(得分:4)
使用TRUNC
将日期缩短到午夜,然后使用NEXT_DAY
获取下一个星期日:
SELECT trading_interval,
NEXT_DAY( TRUNC( trading_interval ), 'SUNDAY' ) AS week_ending
FROM your_table;
因此,对于测试数据:
CREATE TABLE your_table ( trading_interval ) AS
SELECT DATE '2020-03-02' + INTERVAL '08:30' HOUR TO MINUTE FROM DUAL UNION ALL
SELECT DATE '2020-02-29' + INTERVAL '19:00' HOUR TO MINUTE FROM DUAL;
这将输出:
TRADING_INTERVAL | WEEK_ENDING :------------------ | :------------------ 2020-03-02 08:30:00 | 2020-03-08 00:00:00 2020-02-29 19:00:00 | 2020-03-01 00:00:00
db <>提琴here