PolarDB PostgreSQL版(兼容Oracle)支持nls_timestamp(_tz)_format時間顯示格式。
簡介
nls_timestamp_format
用于控制pg_catalog.to_char(arg1 timestamp)
、pg_catalog.to_timestamp(arg1 text)
函數(shù)的轉(zhuǎn)換格式和timestamp
類型數(shù)據(jù)的輸出格式。nls_timestamp_tz_format
用于控制pg_catalog.to_char(arg1 timestamptz)
、pg_catalog.to_timestamp_tz(arg1 text)
函數(shù)的轉(zhuǎn)換格式和timestamptz
類型數(shù)據(jù)的輸出格式。
說明
timestamp
和timestamp without time zone
為同一類型。timestamptz
和timestamp with time zone
為同一類型。
使用指南
- nls_timestamp_format
nls_timestamp_format
的初始值為''
。可以通過
SET
命令將nls_timestamp_format
設(shè)置為產(chǎn)品支持的合法的TIMESTAMP
類型格式,若格式不合法,則會報錯。可以通過
reset nls_timestamp_format;
命令,對其進(jìn)行重置。以'YYYY/MM/DD HH24:MI:SS'
格式為例,示例如下:- 將
nls_timestamp_format
設(shè)置為'YYYY/MM/DD HH24:MI:SS'
:
顯示結(jié)果如下:set nls_timestamp_format to 'YYYY/MM/DD HH24:MI:SS';
set
- 將
'2021-11-11 11:11:11'
按照'YYYY/MM/DD HH24:MI:SS'
格式進(jìn)行轉(zhuǎn)換,能夠正確執(zhí)行to_char函數(shù):
顯示結(jié)果如下: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'
格式進(jìn)行轉(zhuǎn)換,能夠正確執(zhí)行to_timestamp函數(shù):
顯示結(jié)果如下: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'
格式進(jìn)行顯示:
顯示結(jié)果如下: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
指定的格式完全匹配,否則會產(chǎn)生錯誤或非預(yù)期的結(jié)果:# 將nls_timestamp_format設(shè)置為'YYYY/MM/DD HH:MI:SS.FF'。 set nls_timestamp_format = 'YYYY/MM/DD HH:MI:SS.FF'; # 顯示結(jié)果如下: set # 將'2000-03-28 08:00:00'按照 'YYYY/MM/DD HH:MI:SS.FF'格式進(jìn)行轉(zhuǎn)換,再執(zhí)行to_timestamp函數(shù)。 select to_timestamp('2000-03-28 08:00:00'); # 顯示結(jié)果如下; 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
設(shè)置為產(chǎn)品支持的合法的TIMESTAMPTZ
類型格式,若格式不合法,則會報錯。可以通過
reset nls_timestamp_tz_format;
命令,對其進(jìn)行重置。以'YYYY/MM/DD HH24:MI:DD TZH:TZM'
格式為例,示例如下:- 將
nls_timestamp_tz_format
設(shè)置為'YYYY/MM/DD HH24:MI:DD TZH:TZM'
:
顯示結(jié)果如下: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'
格式進(jìn)行轉(zhuǎn)換,能夠正確執(zhí)行to_char函數(shù):
顯示結(jié)果如下: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'
格式進(jìn)行轉(zhuǎn)換,能夠正確執(zhí)行to_timestamp函數(shù):
顯示結(jié)果如下: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'
格式進(jìn)行顯示:
顯示結(jié)果如下: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
指定的格式完全匹配,否則會產(chǎn)生錯誤或非預(yù)期的結(jié)果:# 將nls_timestamp_tz_format設(shè)置為'YYYY/MM/DD HH:MI:SS.FF TZH:TZM'。 set nls_timestamp_tz_format = 'YYYY/MM/DD HH:MI:SS.FF TZH:TZM'; # 顯示結(jié)果如下: set # 將'2000-03-28 08:00:00 +8'按照'YYYY/MM/DD HH:MI:SS.FF TZH:TZM'格式進(jìn)行轉(zhuǎn)換,再執(zhí)行to_timestamp函數(shù)。 select to_timestamp('2000-03-28 08:00:00 +8'); # 顯示結(jié)果如下: 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
- 將