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

to_charによるフォーマット間隔

    精度を下げたい場合は、結果をキャストできます:

    SQL> SELECT TO_DSINTERVAL('10 10:00:00') t_interval FROM dual;
    
    T_INTERVAL
    -----------------------------------------------------------
    +000000010 10:00:00.000000000
    
    SQL> SELECT CAST(TO_DSINTERVAL('10 10:00:00')
      2                 AS INTERVAL DAY(2) TO SECOND(3)) t_interval
      3    FROM dual;
    
    T_INTERVAL
    -----------------------------------------------------------
    +10 10:00:00.000
    

    次のOPコメントを編集します。

    Oracle Documentation(11gr1)から:

    間隔データ型にはフォーマットモデルがありません。したがって、それらの表示を調整するには、EXTRACTなどの文字関数を組み合わせてコンポーネントを連結する必要があります。

    目的の出力を実現するには、EXTRACTを手動で使用する必要があるようです。

    SQL> SELECT to_char(extract(DAY FROM t_interval), 'fmS99999') || ' ' ||
      2         to_char(extract(HOUR FROM t_interval), 'fm00') || ':' ||
      3         to_char(extract(MINUTE FROM t_interval), 'fm00') || ':' ||
      4         to_char(extract(SECOND FROM t_interval), 'fm00.000')
      5    FROM (SELECT TO_DSINTERVAL('10 01:02:55.895') t_interval FROM dual)
      6  ;
    
    TO_CHAR(EXTRACT(DAYFROMT_INTER
    ------------------------------
    +10 01:02:55.895
    


    これはあまりエレガントではありませんが、マイクロ秒の精度を処理する唯一の方法のようです。



    1. Postgresユーザーは存在しませんか?

    2. 日付データ型のEquals(=)とLIKE

    3. 可用性グループ通信用の専用ネットワークの構成

    4. MariaDBでJSON配列から要素を返す方法