跳转到内容

TO_TIMESTAMP 将表达式转换为带时间的日期(timestamp/datetime)。

该函数可接受一个或两个参数。给定一个参数时,函数从字符串中提取日期。如果参数是整数,函数会将其解释为 Unix 纪元(1970 年 1 月 1 日午夜)之前(负数)或之后(正数)的秒数、毫秒数或微秒数:

  • 如果整数小于 31,536,000,000,则按秒处理。
  • 如果整数大于或等于 31,536,000,000 且小于 31,536,000,000,000,则按毫秒处理。
  • 如果整数大于或等于 31,536,000,000,000,则按微秒处理。

给定两个参数时,函数按第二个字符串指定的格式将第一个字符串转换为时间戳。要在 PlaidCloud Lakehouse 中自定义日期和时间的格式,可以使用格式说明符来定义所需的日期和时间值格式。有关受支持说明符的完整列表,请参阅 Formatting Date and Time。

  • 输出的时间戳反映您的 PlaidCloud Lakehouse 时区。
  • 要转换的字符串中必须包含时区信息,否则将返回 NULL。

日期格式使用 strftime 规范表示。请参阅快速参考。

另请参阅:TO_DATE

func.to_timestamp(<expr>)
func.to_timestamp('2022-01-02T03:25:02.868894-07:00')
┌────────────────────────────────────────────────────────────────┐
│ func.to_timestamp('2022-01-02T03:25:02.868894-07:00') │
│ Timestamp │
├────────────────────────────────────────────────────────────────┤
│ 2022-01-02 10:25:02.868894 │
└────────────────────────────────────────────────────────────────┘
-- Convert a string or integer to a timestamp
TO_TIMESTAMP(<expr>)
-- Convert a string to a timestamp using the given pattern
TO_TIMESTAMP(<expr, expr>)

返回格式为“YYYY-MM-DD hh:mm:ss.ffffff”的时间戳。如果给定字符串符合此格式但缺少时间部分,会自动补全为此格式,填充值为 0。

SELECT TO_TIMESTAMP('2022-01-02T03:25:02.868894-07:00');
---
2022-01-02 10:25:02.868894
SELECT TO_TIMESTAMP('2022-01-02 02:00:11');
---
2022-01-02 02:00:11.000000
SELECT TO_TIMESTAMP('2022-01-02T02:00:22');
---
2022-01-02 02:00:22.000000
SELECT TO_TIMESTAMP('2022-01-02T01:12:00-07:00');
---
2022-01-02 08:12:00.000000
SELECT TO_TIMESTAMP('2022-01-02T01');
---
2022-01-02 01:00:00.000000
SELECT TO_TIMESTAMP(1);
---
1970-01-01 00:00:01.000000
SELECT TO_TIMESTAMP(-1);
---
1969-12-31 23:59:59.000000
SET GLOBAL timezone ='Japan';
SELECT TO_TIMESTAMP('2022 年 2 月 4 日、8 時 58 分 59 秒、タイムゾーン:+0900', '%Y年%m月%d日、%H時%M分%S秒、タイムゾーン:%z');
---
2022-02-04 08:58:59.000000
SET GLOBAL timezone ='America/Toronto';
SELECT TO_TIMESTAMP('2022 年 2 月 4 日、8 時 58 分 59 秒、タイムゾーン:+0900', '%Y年%m月%d日、%H時%M分%S秒、タイムゾーン:%z');
---
2022-02-03 18:58:59.000000