Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle PLSQL cắt ngắn ngày giờ thành 15 phút khối

Điều này sẽ giúp bạn có được quý gần nhất.

select sysdate,
       trunc(sysdate,'mi') -                           --truncate to the nearest minute
       numtodsinterval(                                --convert the minutes in number to interval type and subtract.
                       mod(to_char(sysdate,'mi'),15),  --find the minutes from the nearest quarter
                      'minute'                          
                      ) as nearest_quarter
  from dual;

Đầu ra:

sysdate                             nearest_quarter
-----------------------------------------------------------------
October, 11 2013 05:54:24+0000      October, 11 2013 05:45:00+0000
October, 11 2013 05:22:24+0000      October, 11 2013 05:15:00+0000

Sử dụng giá trị này làm giá trị ban đầu của bạn và sau đó lặp lại giá trị này.

with cte as(
  select trunc(sysdate,'mi') - 
         numtodsinterval(mod(to_char(sysdate,'mi'),15),'minute') as nearest_quarter
  from dual
  )
select nearest_quarter - numtodsinterval((level - 1)*15, 'minute'),
       nearest_quarter - numtodsinterval((level - 2)*15, 'minute')
from cte
connect by level <= 10;

Demo .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PL / SQL được lưu trữ thủ tục ra con trỏ tới VBA ADODB.RecordSet?

  2. Khai thác dữ liệu Oracle (ODM) - Cài đặt &Thiết lập

  3. SQL không nhận ra bí danh cột trong mệnh đề where

  4. Entity Framework kết nối với Oracle:ODP cho .NET không hỗ trợ thời gian

  5. Oracle regex thay thế nhiều lần xuất hiện của một chuỗi được bao quanh bởi dấu phẩy