全部產品
Search
文件中心

PolarDB:nls_timestamp(_tz)_format

更新時間:Jul 06, 2024

PolarDB PostgreSQL版(相容Oracle)支援nls_timestamp(_tz)_format時間顯示格式。

簡介

  • nls_timestamp_format用於控制pg_catalog.to_char(arg1 timestamp)pg_catalog.to_timestamp(arg1 text)函數的轉換格式和timestamp類型資料的輸出格式。
  • nls_timestamp_tz_format用於控制pg_catalog.to_char(arg1 timestamptz)pg_catalog.to_timestamp_tz(arg1 text)函數的轉換格式和timestamptz類型資料的輸出格式。
說明
  • timestamptimestamp without time zone為同一類型。
  • timestamptztimestamp with time zone為同一類型。

使用指南

  • nls_timestamp_format

    nls_timestamp_format的初始值為''

    可以通過SET命令將nls_timestamp_format設定為產品支援的合法的TIMESTAMP類型格式,若格式不合法,則會報錯。

    可以通過reset nls_timestamp_format;命令,對其進行重設。

    'YYYY/MM/DD HH24:MI:SS'格式為例,樣本如下:
    • nls_timestamp_format設定為'YYYY/MM/DD HH24:MI:SS'
      set nls_timestamp_format to 'YYYY/MM/DD HH24:MI:SS';
      顯示結果如下:
      set
    • '2021-11-11 11:11:11'按照'YYYY/MM/DD HH24:MI:SS'格式進行轉換,能夠正確執行to_char函數:
      select to_char('2021-11-11 11:11:11'::timestamp);
      顯示結果如下:
             to_char
      ---------------------
       2021/11/11 11:11:11
      (1 row)
    • '2021-11-11 11:11:11'按照'YYYY/MM/DD HH24:MI:SS'格式進行轉換,能夠正確執行to_timestamp函數:
      select to_timestamp('2021/11/11 11:11:11'::text);
      顯示結果如下:
          to_timestamp
      ---------------------
       2021/11/11 11:11:11
      (1 row)
    • timestamp按照'YYYY/MM/DD HH24:MI:SS'格式進行顯示:
      select '2021-11-11 11:11:11'::timestamp;
      顯示結果如下:
            timestamp
      ---------------------
       2021/11/11 11:11:11
      (1 row)
    說明 to_timestamp(arg1 TEXT)arg1的格式要與nls_timestamp_format指定的格式完全符合,否則會產生錯誤或非預期的結果:
    # 將nls_timestamp_format設定為'YYYY/MM/DD HH:MI:SS.FF'。
    set nls_timestamp_format = 'YYYY/MM/DD HH:MI:SS.FF';
    # 顯示結果如下:
    set
    # 將'2000-03-28 08:00:00'按照 'YYYY/MM/DD HH:MI:SS.FF'格式進行轉換,再執行to_timestamp函數。
    select to_timestamp('2000-03-28 08:00:00');
    # 顯示結果如下;
    ERROR:  date/time field value out of range: "2000-03-28 08:00:00"
    CONTEXT:  PL/pgSQL function to_timestamp(text) line 7 at RETURN
  • nls_timestamp_tz_format

    nls_timestamp_tz_format的初始值為''

    可以通過SET命令將nls_timestamp_tz_format設定為產品支援的合法的TIMESTAMPTZ類型格式,若格式不合法,則會報錯。

    可以通過reset nls_timestamp_tz_format;命令,對其進行重設。

    'YYYY/MM/DD HH24:MI:DD TZH:TZM'格式為例,樣本如下:
    • nls_timestamp_tz_format設定為'YYYY/MM/DD HH24:MI:DD TZH:TZM'
      set nls_timestamp_tz_format to 'YYYY/MM/DD HH24:MI:SS TZH:TZM';
      顯示結果如下:
      set
    • '2021-11-11 11:11:11 +8'按照'YYYY/MM/DD HH24:MI:DD TZH:TZM'格式進行轉換,能夠正確執行to_char函數:
      select to_char('2021-11-11 11:11:11 +8'::timestamptz);
      顯示結果如下:
                to_char
      ----------------------------
       2021/11/11 03:11:11 +00:00
      (1 row)
    • '2021/11/11 11:11:11 +8'按照'YYYY/MM/DD HH24:MI:DD TZH:TZM'格式進行轉換,能夠正確執行to_timestamp函數:
      select to_timestamp_tz('2021/11/11 11:11:11 +8'::text);
      顯示結果如下:
            to_timestamp_tz
      ----------------------------
       2021/11/11 03:11:11 +00:00
      (1 row)
    • timestamptz按照'YYYY/MM/DD HH24:MI:DD TZH:TZM'格式進行顯示:
      select '2021/11/11 11:11:11 +8'::timestamptz
      顯示結果如下:
              timestamptz
      ----------------------------
       2021/11/11 03:11:11 +00:00
      (1 row)
    說明 to_timestamp_tz(arg1 TEXT)arg1的格式要與nls_timestamp_tz_format指定的格式完全符合,否則會產生錯誤或非預期的結果:
    # 將nls_timestamp_tz_format設定為'YYYY/MM/DD HH:MI:SS.FF TZH:TZM'。
    set nls_timestamp_tz_format = 'YYYY/MM/DD HH:MI:SS.FF TZH:TZM';
    # 顯示結果如下:
    set
    # 將'2000-03-28 08:00:00 +8'按照'YYYY/MM/DD HH:MI:SS.FF TZH:TZM'格式進行轉換,再執行to_timestamp函數。
    select to_timestamp('2000-03-28 08:00:00 +8');
    # 顯示結果如下:
    ERROR:  date/time field value out of range: "2000-03-28 08:00:00 +8"
    CONTEXT:  PL/pgSQL function to_timestamp(text) line 7 at RETURN