在 PostgreSQL 中,对时间 / 日期数据进行格式化输出主要通过
TO_CHAR
函数来实现,该函数能将日期、时间、时间戳等类型的数据转换为指定格式的字符串。以下为你详细介绍不同场景下的使用方法:
TO_CHAR(expression, format)
expression
:需要进行格式化的时间 / 日期表达式,可以是日期、时间、时间戳等类型的数据,也可以是包含这些类型数据的列名。
format
:指定输出的格式模板,由一系列格式元素组成。
SELECT TO_CHAR(CURRENT_DATE, 'YYYY');
该语句会将当前日期中的年份以四位数形式输出。
SELECT TO_CHAR(CURRENT_DATE, 'MM');
此语句会输出当前日期对应的两位数月份。
SELECT TO_CHAR(CURRENT_DATE, 'DD');
它会返回当前日期中的日期部分,以两位数显示。
- 组合日期格式:可以将多个格式元素组合使用,以满足不同的日期显示需求。
SELECT TO_CHAR(CURRENT_DATE, 'YYYY年MM月DD日');
上述语句会将当前日期格式化为 “年 - 月 - 日” 的形式,如 “2025 年 05 月 10 日”。
HH24
:24 小时制的小时数(00 - 23)。
SELECT TO_CHAR(CURRENT_TIME, 'HH24');
该语句会输出当前时间的 24 小时制小时数。
SELECT TO_CHAR(CURRENT_TIME, 'MI');
它会返回当前时间的分钟部分。
SELECT TO_CHAR(CURRENT_TIME, 'SS');
此语句会输出当前时间的秒数。
- 组合时间格式:将不同的时间格式元素组合起来,形成完整的时间显示格式。
SELECT TO_CHAR(CURRENT_TIME, 'HH24:MI:SS');
该语句会将当前时间格式化为 “小时:分钟:秒” 的形式,如 “14:30:00”。
YYYY-MM-DD HH24:MI:SS
:常见的日期和时间组合格式。
SELECT TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS');
此语句会将当前的日期和时间格式化为 “年 - 月 - 日 小时:分钟:秒” 的形式,例如 “2025 - 05 - 10 14:30:00”。
Mon
:缩写的月份名称(如 Jan、Feb 等)。
SELECT TO_CHAR(CURRENT_DATE, 'Mon');
该语句会输出当前日期对应的缩写月份名称。
Day
:完整的星期几名称(如 Monday、Tuesday 等)。
SELECT TO_CHAR(CURRENT_DATE, 'Day');
它会返回当前日期是星期几的完整名称。
假设有一个名为 events
的表,包含 event_time
列(数据类型为 TIMESTAMP
),要将该列的数据格式化为指定的日期和时间格式,可以使用以下查询:
SELECT TO_CHAR(event_time, 'YYYY年MM月DD日 HH24:MI:SS') AS formatted_time
FROM events;
该查询会将 events
表中 event_time
列的每个时间戳数据格式化为 “年 - 月 - 日 小时:分钟:秒” 的形式,并将结果以 formatted_time
列返回。