Bạn có thể cắt ngắn đến phút gần nhất thành 0 giây và sau đó trừ số phút để quay lại khoảng thời gian 15 phút gần nhất sau giờ và sau đó áp dụng hiệu số của bạn:
SELECT TRUNC( current_timestamp, 'MI' )
- MOD( EXTRACT( MINUTE FROM current_timestamp ), 15 ) * INTERVAL '1' MINUTE
- INTERVAL '30' MINUTE
+ INTERVAL '59' SECOND AS start_time,
TRUNC( current_timestamp, 'MI' )
- MOD( EXTRACT( MINUTE FROM current_timestamp ), 15 ) * INTERVAL '1' MINUTE
- INTERVAL '15' MINUTE
+ INTERVAL '59' SECOND AS end_time,
current_timestamp
FROM DUAL
Kết quả đầu ra:
db <> fiddle tại đây