PostgreSQL to_timestamp() 函数使用指南

PostgreSQL to_timestamp() 函数将 Unix 纪元时间转为一个标准的带时区信息的时间戳,或者根据给定的格式将指定的字符串转为时间戳。

to_timestamp() 语法

PostgreSQL to_timestamp () 函数有两种语法形式:

to_timestamp(unix_epoch DOUBLE) -> TIMESTAMP WITH TIME ZONE

或者

to_timestamp(str TEXT, format TEXT) -> TIMESTAMP WITH TIME ZONE

参数

unix_epoch
必需的。 Unix 纪元时间(从 1970-01-01 00:00:00+0 开始的秒数)。
str
必需的。 一个时间字符串。
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 支持)

返回值

PostgreSQL to_timestamp() 函数返回一个带有时区信息的时间戳值,它从一个字符串根据指定的格式转换而来。

to_timestamp() 示例

转换 Unix 纪元时间

本示例展示了如何使用 PostgreSQL to_timestamp() 函数将一个 Unix 纪元时间转为一个标准的带时区信息的时间戳并返回。

SELECT to_timestamp(1652704873);
      to_timestamp
------------------------
 2022-05-16 20:41:13+08

转换时间字符串

本示例展示了如何使用 PostgreSQL to_timestamp() 函数根据指定的格式将一个指定的时间字符串转换为一个时间戳值。

示例 1

SELECT to_timestamp('2022-05-17', 'YYYY-MM-DD');
      to_timestamp
------------------------
 2022-05-17 00:00:00+08

示例 2

SELECT to_timestamp('2022-05-17 10:10:10.022.000001', 'YYYY-MM-DD HH:MI:SS.MS.US');
         to_timestamp
-------------------------------
 2022-05-17 10:10:10.022001+08