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

Tạo chuỗi ngày và giờ

Tôi nghĩ bạn muốn sử dụng chức năng lag và phân vùng theo dt ... Hy vọng điều này sẽ hữu ích.

with par as (
  select date '2015-08-07' enddate, 4 LookBackDays, 3600 inteval, 'Bob' Name, 
         '09:00' open, '14:00' close from dual),
t1 as (
  select to_char(enddate-level+1, 'yyyy-mm-dd') dt, name, open, close from par
    connect by level <= LookBackDays + 1 ),
t2 as (
  select to_char(to_date(open, 'hh24:mi') + (level) * inteval / (24*60*60), 'hh24:mi') tm
    from par
    connect by to_date(open, 'hh24:mi') + level * inteval / (24*60*60) 
               <= to_date(close, 'hh24:mi') )
select to_date(dt, 'yyyy-mm-dd') dt, 
       lag(to_date(dt||' '||tm, 'yyyy-mm-dd hh24:mi'), 1,to_date(dt||' '||open, 'yyyy-mm-dd hh24:mi'))over(partition by to_date(dt||' '||open, 'yyyy-mm-dd hh24:mi') order by tm) open,  
       to_date(dt||' '||close, 'yyyy-mm-dd hh24:mi') close, name, 
       to_date(dt||' '||tm, 'yyyy-mm-dd hh24:mi') IntervalEnd
from t1 cross join t2 order by dt, tm



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. XMLTABLE trong oracle - kiểu động XQuery không khớp:chuỗi singleton dự kiến ​​- có chuỗi nhiều mục

  2. Màn hình thay đổi bảng Oracle

  3. Tạo một biểu mẫu Apex với nhiều trang

  4. Câu lệnh cập nhật Oracle SQL thay đổi giá trị cột theo thứ tự nào?

  5. Cách lặp qua các cột với PL / SQL