SQL-将日期/时间四舍五入到下一个星期日

时间:2020-03-01 23:40:07

标签: sql oracle date

希望将半小时的采访安排到下一个星期日。我的查询有一个列(标题为“交易间隔”),其中包含日期和时间戳,例如02/03/2020 08:3029/02/2020 19:00

我想生成一个标题为Week Ending的新列,将这些日期/时间四舍五入到下一个星期日。

因此对于日期29/02/2020 19:00,它将四舍五入并返回01/03/2020 00:00;对于日期02/03/2020,它将四舍五入到08/03/2020 00:00

谢谢

1 个答案:

答案 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