TIMESTAMP
TIMESTAMP
类型用于表示日期和时间戳,可以包含时区信息。默认情况下,时间戳表示为本地时间(TIMESTAMP_LTZ)。所有操作都在当前会话的时区中执行,输出结果也以当前Lakehouse所在服务的时区为准。支持用户输入多种格式的时间戳,并自动转换为TIMESTAMP
类型。输出结果为字符串格式,格式为 'yyyy-MM-dd HH:mm:ss'
,如果用户输入包含毫秒,则输出结果也会包含毫秒。最大精度支持到微秒(us),精度取决于写入时的时间戳精度。
语法
TIMESTAMP | TIMESTAMP_LTZ
示例
- 使用默认时间戳格式:
SELECT TIMESTAMP '2022-12-31 00:00:00';
SELECT TIMESTAMP_LTZ '2022-12-31 00:00:00';
- 使用不同格式的时间戳:
SELECT TIMESTAMP '2022-12-31 00:00:00.123'; -- 包含毫秒
+------------------------------------+
| TIMESTAMP'2022-12-31 00:00:00.123' |
+------------------------------------+
| 2022-12-31 00:00:00.123 |
+------------------------------------+
SELECT TIMESTAMP '2022-12-31T00:00:00.123Z'; -- ISO 8601 格式,包含时区信息
+-------------------------------------+
| TIMESTAMP'2022-12-31T00:00:00.123Z' |
+-------------------------------------+
| 2022-12-31 08:00:00.123 |
+-------------------------------------+
- 将字符串转换为时间戳类型:
SELECT CAST('2022-12-31 00:00:00' AS TIMESTAMP);
SELECT CAST('2022-12-31 00:00:00' AS TIMESTAMP_LTZ);
- 使用不同的精度选项:
SELECT TIMESTAMP '2022-12-31 00:00:00.123456'; -- 微秒精度
SELECT TIMESTAMP '2022-12-31 00:00:00.123'; -- 毫秒精度
SELECT TIMESTAMP '2022-12-31 00:00:00'; -- 秒精度
注意事项
- 在进行时间戳转换时,请注意时区差异可能导致的误差。
- 请确保输入的时间戳格式与系统支持的格式相匹配,以免出现错误。