sql >> データベース >  >> RDS >> Oracle

OraclePLSQLは日時を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. テーブル列でのPostgresJSON関数の使用

    2. postgreSQLフィボナッチ数列-クエリに結果データの宛先がありません

    3. Oracle SQLクエリ:時間に基づいてグループごとに最新の値を取得します

    4. Oracle Sql Check Constraint !=他のテーブル