Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle PLSQL съкращава датите и часовете до 15-минутни блокове

Така ще получите най-близкото тримесечие.

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;

Изход:

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

Използвайте това като начална стойност и след това повторете това.

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;

Демо .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изтриване на таблици от база данни Oracle 10g

  2. Създаване на тригер за автоматично добавяне на id и по подразбиране unix datetime

  3. Изпълнение на Total от Group SQL (Oracle)

  4. изчисляване на часовете въз основа на работното време в Oracle SQL

  5. как да увелича изходната дължина на колона sqlplus?