跳到主要内容
版本:Candidate-4.0

to_datetime

将 Unix 时间戳转换为 基于当前时区设置 的 DATETIME 类型值。

有关设置时区的详细说明,请参阅 配置时区

如果您想将 Unix 时间戳转换为与当前会话时区设置无关的 DATETIME 类型值,可以使用 to_datetime_ntz

语法

DATETIME to_datetime(BIGINT unix_ts, INT scale)

参数

名称类型是否必需描述
unix_tsBIGINT要转换的 Unix 时间戳。例如,1598306400(秒)和 1598306400123(毫秒)。
scaleINT时间精度。有效值:
  • 0 表示秒(默认)。
  • 3 表示毫秒。
  • 6 表示微秒。

返回值

  • 成功时:返回基于当前会话时区的 DATETIME 值。
  • 失败时:返回 NULL。常见原因包括:
    • 无效的 scale(不是 0、3 或 6)
    • 值超出 DATETIME 范围(0001-01-01 到 9999-12-31)

示例

SET time_zone = 'Asia/Shanghai';

SELECT to_datetime(1598306400);
-- 返回: 2020-08-25 06:00:00

SELECT to_datetime(1598306400123, 3);
-- 返回: 2020-08-25 06:00:00.123000