数仓 SQL 函数对照

首页 / 日期

FROM_UNIXTIME 时间戳转日期

FROM_UNIXTIME 把以秒为单位的 Unix 时间戳转换为日期时间。各引擎的返回类型、格式参数和时区处理不同,Hologres 需要改用 TO_TIMESTAMP。

各引擎写法 · 迁移注意事项 · 示例

各引擎写法

引擎支持写法说明依据
MaxCompute 支持 FROM_UNIXTIME(unixtime) 输入为秒,返回 DATETIME。默认只接受一个参数;开启 Hive 兼容模式后可以传第二个参数指定格式。 官方文档
Hologres 需改写 TO_TIMESTAMP(seconds) 文档中没有 FROM_UNIXTIME。TO_TIMESTAMP(double precision) 按秒转换,返回 TIMESTAMPTZ。需要字符串时再用 TO_CHAR。 官方文档
StarRocks 支持 from_unixtime(unix_timestamp[, string_format]) 返回 VARCHAR,默认格式 yyyy-MM-dd HH:mm:ss。小于 0 或大于 253402243199 时返回 NULL。 官方文档
Doris 支持 FROM_UNIXTIME(unix_timestamp[, string_format]) 格式可以写 %Y-%m-%d %H:%i:%s,也可以写 yyyy-MM-dd HH:mm:ss。超出 0~32536771199 时返回 NULL。 官方文档
Hive 支持 from_unixtime(unixtime[, pattern]) 输入为距 1970-01-01 00:00:00 UTC 的秒数,返回 string。 官方文档
Spark SQL 支持 from_unixtime(unix_time[, fmt]) Spark 1.5.0 起提供,结果按会话时区显示。 官方文档
Flink SQL 支持 FROM_UNIXTIME(numeric[, string]) 返回字符串,默认格式 yyyy-MM-dd HH:mm:ss,结果按会话时区表示。 官方文档

迁移注意事项

示例

把秒级时间戳转为日期时间

MaxCompute
SELECT FROM_UNIXTIME(ts_sec) FROM events;
Hologres
SELECT TO_CHAR(TO_TIMESTAMP(ts_sec), 'YYYY-MM-DD HH24:MI:SS') FROM events;
StarRocks
SELECT from_unixtime(ts_sec) FROM events;
Flink SQL
SELECT FROM_UNIXTIME(ts_sec) FROM events;

毫秒时间戳

StarRocks
SELECT from_unixtime(CAST(ts_ms / 1000 AS BIGINT)) FROM events;
Spark SQL
SELECT from_unixtime(CAST(ts_ms / 1000 AS BIGINT)) FROM events;

同类函数

最后核对日期: