PostgreSQL to_char() 函数使用指南
PostgreSQL to_char()
函数根据指定的格式将时间戳值、间隔值、数字值转为字符串并返回结果。
to_char()
语法
这是 PostgreSQL to_char ()
函数的语法:
to_char(value, format TEXT) -> TEXT
参数
value
- 必需的。 一个要格式化输出为字符串的值。它可用于
TIMESTAMP
,TIMESTAMPTZ
,INTERVAL
,INTEGER
,BIGINT
,NUMERIC
,REAL
,DOUBLE
等类型的值。 format
-
必需的。 转换这个值所采用的模板。模板由一些占位符和修饰符组成。占位符定义了输出字符串的格式,修饰符则对模板的行为做出一些改变。
日期/时间格式模板
您可以使用下表中的模板模式来构造日期/时间的格式模板。
模式 | 描述 |
---|---|
HH |
一天中的小时 (01–12) |
HH12 |
一天中的小时 (01–12) |
HH24 |
一天中的小时 (00–23) |
MI |
分钟 (00–59) |
SS |
秒 (00–59) |
MS |
毫秒 (000–999) |
US |
微秒(000000–999999) |
FF1 |
十分之一秒 (0–9) |
FF2 |
百分之一秒 (00–99) |
FF3 |
毫秒 (000–999) |
FF4 |
十分之一毫秒 (0000–9999) |
FF5 |
百分之一毫秒 (00000–99999) |
FF6 |
微秒(000000–999999) |
SSSS , SSSSS |
午夜过后几秒钟 (0–86399) |
AM , am , PM , pm |
上午、下午(无句点) |
A.M. , a.m. , P.M. , p.m. |
上午、下午(带句点) |
Y,YYY |
年份(4 位或更多位数字),带逗号 |
YYYY |
年份(4 位或更多数字) |
YYY |
年份的最后 3 位数字 |
YY |
年份的最后 2 位数字 |
Y |
年份的最后一位数字 |
IYYY |
ISO 8601 周编号年份(4 位或更多位) |
IYY |
ISO 8601 周编号年份的最后 3 位数字 |
IY |
ISO 8601 周编号年份的最后 2 位数字 |
I |
ISO 8601 周编号年份的最后一位数字 |
BC , bc , AD , ad |
公元前、公元后(无句点) |
B.C. , b.c. , A.D. , a.d. |
公元前、公元后(带句点) |
MONTH |
全大写月份名称(空白填充为 9 个字符) |
Month |
全大写月份名称(空白填充为 9 个字符) |
month |
全小写月份名称(空白填充为 9 个字符) |
MON |
缩写大写月份名称(英文 3 个字符,本地化长度各不相同) |
Mon |
缩写大写月份名称(英文 3 个字符,本地化长度不同) |
mon |
缩写小写月份名称(英文 3 个字符,本地化长度不同) |
MM |
月数 (01–12) |
DAY |
全大写的日期名称(空白填充为 9 个字符) |
Day |
全大写的日期名称(空白填充为 9 个字符) |
day |
全小写的日期名称(空白填充为 9 个字符) |
DY |
缩写的大写的日期名称(3 个英文字符,本地化长度各不相同) |
Dy |
缩写的大写的日期名称(3 个英文字符,本地化长度各不相同) |
dy |
缩写的小写的日期名称(3 个英文字符,本地化长度各不相同) |
DDD |
一年中的一天 (001–366) |
IDDD |
ISO 8601 周编号年份的一天(001–371;一年中的第 1 天是第一个 ISO 周的星期一) |
DD |
月中的某一天 (01–31) |
D |
星期几,星期日 (1 ) 到星期六 (7 ) |
ID |
ISO 8601 星期几,星期一 (1 ) 到星期日 (7 ) |
W |
每月的一周 (1–5) (第一周从该月的第一天开始) |
WW |
一年中的周数 (1–53) (第一周从一年的第一天开始) |
IW |
ISO 8601 周编号年份的周号(01–53;一年中的第一个星期四在第 1 周) |
CC |
世纪(2 位数字)(二十一世纪开始于 2001-01-01) |
J |
儒略历日期(自公元前 4714 年 11 月 24 日当地午夜以来的整数天) |
Q |
季度 |
RM |
大写罗马数字形式的月份(I 到 XII; I 是 1 月) |
rm |
小写罗马数字形式的月份 (i 到 xii; i 是 1 月) |
TZ |
大写时区缩写(仅 to_char 支持) |
tz |
小写时区缩写(仅 to_char 支持) |
TZH |
时区小时 |
TZM |
时区分钟 |
OF |
时区与 UTC 的偏移量(仅 to_char 支持) |
您可以将下表中的修饰符用于日期/时间模板模式。
修饰符 | 描述 |
---|---|
FM 前缀 |
填充模式(抑制前导零和填充空白) |
TH 后缀 |
序号后缀(大写) |
th 后缀 |
序号后缀 (小写) |
FX 前缀 |
固定格式全局选项(请参阅用法说明) |
TM 前缀 |
翻译模式(根据 lc_time 使用本地化的日和月名称) |
数字格式模板
您可以使用下表中的模板模式来构造数字格式字符串。
模式 | 描述 |
---|---|
9 |
数字位置(如果无关紧要,可以丢弃) |
0 |
数字位置(不会被删除,即使无关紧要) |
. |
小数点 |
, |
组(千)分隔符 |
PR |
尖括号中的负值 |
S |
符号(使用区域设置) |
L |
货币符号(使用区域设置) |
D |
小数点(使用区域设置) |
G |
组分隔符(使用区域设置) |
MI |
指定位置的减号(如果数字 < 0) |
PL |
在指定位置加号(如果数字 > 0) |
SG |
指定位置的加号/减号 |
RN |
罗马数字( 介于 1 和 3999 之间) |
TH , th |
序号后缀 |
V |
移位指定的位数 |
EEEE |
科学记数法的指数 |
您可以将下表中的修饰符用于数字格式字符串中。
修饰符 | 描述 | 例 |
---|---|---|
FM 前缀 |
填充模式(抑制前导零和填充空白) | FM99.99 |
TH 后缀 |
序号后缀(大写) | 999TH |
th 后缀 |
序号后缀(小写) | 999th |
返回值
PostgreSQL to_char()
函数返回一个字符串,它由指定的时间戳、间隔、或数字根据指定的格式转换而来。
to_char()
示例
本示例展示了如何使用 PostgreSQL to_char()
函数按照指定的格式输出一个时间戳值。
SELECT to_char(timestamp '2022-05-17 17:31:12.112', 'YYYY/MM/DD HH12:MI:SS');
to_char
---------------------
2022/05/17 05:31:12
本示例展示了如何使用 PostgreSQL to_char()
函数按照指定的格式输出一个日期值。
SELECT to_char(date '2022-05-17', 'YYYY/MM/DD');
to_char
------------
2022/05/17
本示例展示了如何使用 PostgreSQL to_char()
函数按照指定的格式输出一个间隔值。
SELECT to_char(interval '20 hours 20 minutes', 'HH24:MI:SS');
to_char
----------
20:20:00
本示例展示了如何使用 PostgreSQL to_char()
函数按照指定的格式输出一个数字。
SELECT to_char(12345678.9, '999G999G999G999G999.900');
to_char
--------------------------
12,345,678.900
因为,格式化字符串比数字长,因此,在输出的字符串的左侧添加了一些空格。如果您不需要这些前导空格,那你可以使用 FM
修饰符,比如:
SELECT to_char(12345678.9, 'FM999G999G999G999G999.900');
to_char
----------------
12,345,678.900