oracle時間日付処理

3015 ワード

日付処理
日付タイプ
  • DATE日付タイプで、含まれる時間部分には年、月、日、時、分、秒があり、秒の小数ビットとタイムゾーンは含まれません.正当なデータ範囲はJanuary 1,4712 BC,to December 31,9999 ADである.デフォルトのフォーマットはNLS_DATE_FORMAT表示で設定またはNLS_経由TERITORYは暗黙的に設定されています.データサイズは固定された7ビットです.
  • TIMESTAMP[(fractional_seconds_precision)]タイムスタンプタイプ.年、月、日、時、分、秒が含まれ、秒は精度を持つことができ、精度範囲は0~9ビット、デフォルトの精度は6ビットで、タイムゾーンはありません.デフォルトのフォーマットはNLS_TIMESTAMP_FORMATパラメータ表示指定またはNLS_経由TERITORYパラメータは暗黙的に指定します.データのサイズは7-11ビットで、具体的なサイズは設定の精度に依存します.
  • TIMESTAMP[(fractional_seconds_precision)]WITH TIME ZONEにタイムゾーンのタイムスタンプタイプがあります.
  • TIMESTAMP[(fractional_seconds_precision)]WITH LOCAL TIME ZONEタイムゾーン付きタイムスタンプタイプ.
  • INTERVAL YEAR[(year_precision)]TO MONTHは、年月のある期間を格納します.
  • INTERVAL DAY[(day_precision)]TO SECOND[(fractional_seconds_precision)]は、日、時、分、秒の時間期間を格納します.

  • 日付関数
  • TO_CHAR(datetime,fmt)は日付がフォーマットされ、戻りタイプはVARCHR 2である.datetimeが入力した日付、fmtは変換のフォーマットを表します.
  • SELECT to_char(sysdate,'yyyy-mm-dd') FROM dual;
    select to_char(sysdate,'dy') from dual; #     
  • TO_DATE(char,fmt)文字列は日付を回転し、戻りタイプはDATEである.charは入力された日付文字列であり、fmtは変換のフォーマットを表す.
  • SELECT to_date('2017-09-13','yyyy-mm-dd') FROM dual;
    SELECT to_char(TO_DATE('7','dd'),'yyyy-mm-dd')FROM dual;
  • SYSTATEは、システムの現在の時刻を返します.タイプはDATEです.
  • TRUNC(datetime,fmt)は、指定されたフォーマットで時間を切り取り、戻りタイプがDATEである.
  • #    2017-09-13 11:30:32
    SELECT TO_CHAR(TRUNC(SYSDATE,'hh'),'yyyy-mm-dd hh24:mi:ss') FROM DUAL; #2017-09-13 11:00:00  
    SELECT TO_CHAR(TRUNC(SYSDATE,'yy'),'yyyy-mm-dd hh24:mi:ss') FROM DUAL; #2017-01-01 00:00:00
    SELECT TO_CHAR(TRUNC(SYSDATE,'mm'),'yyyy-mm-dd hh24:mi:ss') FROM DUAL; #2017-09-01 00:00:00
    SELECT TO_CHAR(TRUNC(SYSDATE,'mi'),'yyyy-mm-dd hh24:mi:ss') FROM DUAL; #2017-09-13 11:30:00
  • LAST_DAY(date)は、システムの当月の最終日の日付を返します.タイプはDATEです.
  • SELECT LAST_DAY(SYSDATE) from DUAL;

    日付演算
  • 日付タイプについては、加算および減算を実行できます.乗算および除算は実行できません.
  • 時間タイプのデータはINTERVALとNumericタイプのデータと加算することができ、結果は時間タイプである.
  • DateタイプとDateタイプはNumberに減算され、差分日数を表し、DateタイプとtimestampタイプはINTERVAL、INTERVAL、NumericはDateに減算されます.
  • ORACLEはtimestampを自動的にdateタイプの値に変換し、Numberタイプの定数を算術の日付に変換し、間隔式は日数を表す.例えば、SYSDATE+1は明日の日付を表します.SYSDATE-7は1週間前を示します.SYSDATE+(10/(24*60))は、10分後の時間を表します.
  • /**
         ,    
    */
    SELECT (TO_DATE('2017-9-10 12:23:12','yyyy-mm-dd hh24:mi:ss') - TO_DATE('2017-9-10 10:23:12','yyyy-mm-dd hh24:mi:ss')) * 24 FROM DUAL;
  • 取得月の差
  • select months_between(to_date('2017-12-30','yyyy-mm-dd'),to_date('2017-01-01','yyyy-mm-dd')) from dual;

    リファレンス
    https://docs.oracle.com/en/database/
    転載先:https://www.cnblogs.com/ZiYangZhou/p/8146636.html