PostgreSQL中如何对时间/日期数据进行格式化输出?

在 PostgreSQL 中,对时间 / 日期数据进行格式化输出主要通过 TO_CHAR 函数来实现,该函数能将日期、时间、时间戳等类型的数据转换为指定格式的字符串。以下为你详细介绍不同场景下的使用方法:

基本语法

TO_CHAR(expression, format)
  • expression:需要进行格式化的时间 / 日期表达式,可以是日期、时间、时间戳等类型的数据,也可以是包含这些类型数据的列名。
  • format:指定输出的格式模板,由一系列格式元素组成。

常见格式元素及示例

1. 日期格式化

  • YYYY:四位数的年份。
SELECT TO_CHAR(CURRENT_DATE, 'YYYY');

该语句会将当前日期中的年份以四位数形式输出。

  • MM:两位数的月份(01 - 12)。
SELECT TO_CHAR(CURRENT_DATE, 'MM');

此语句会输出当前日期对应的两位数月份。
  • DD:两位数的日期(01 - 31)。
SELECT TO_CHAR(CURRENT_DATE, 'DD');

它会返回当前日期中的日期部分,以两位数显示。

  • 组合日期格式:可以将多个格式元素组合使用,以满足不同的日期显示需求。
SELECT TO_CHAR(CURRENT_DATE, 'YYYY年MM月DD日');

上述语句会将当前日期格式化为 “年 - 月 - 日” 的形式,如 “2025 年 05 月 10 日”。

2. 时间格式化

  • HH24:24 小时制的小时数(00 - 23)。
SELECT TO_CHAR(CURRENT_TIME, 'HH24');

该语句会输出当前时间的 24 小时制小时数。
  • MI:分钟数(00 - 59)。
SELECT TO_CHAR(CURRENT_TIME, 'MI');

它会返回当前时间的分钟部分。

  • SS:秒数(00 - 59)。
SELECT TO_CHAR(CURRENT_TIME, 'SS');

此语句会输出当前时间的秒数。
  • 组合时间格式:将不同的时间格式元素组合起来,形成完整的时间显示格式。
SELECT TO_CHAR(CURRENT_TIME, 'HH24:MI:SS');

该语句会将当前时间格式化为 “小时:分钟:秒” 的形式,如 “14:30:00”。

3. 日期和时间组合格式化

  • YYYY-MM-DD HH24:MI:SS:常见的日期和时间组合格式。
SELECT TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS');

此语句会将当前的日期和时间格式化为 “年 - 月 - 日 小时:分钟:秒” 的形式,例如 “2025 - 05 - 10 14:30:00”。

4. 其他格式元素

  • 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 列返回。

posted on 2025-03-11 14:45  数据库那些事儿  阅读(308)  评论(0)    收藏  举报