TO_TIMESTAMP
引入或更新: v1.2.575
将表达式转换为带时间的日期。
另请参阅: TO_DATE
语法
-- 将字符串或整数转换为时间戳
TO_TIMESTAMP(<expr>)
如果给定一个 ISO 8601 日期格式字符串,该函数从字符串中提取日期;如果给定的是一个整数,该函数将整数解释为自 Unix 纪元(1970 年 1 月 1 日午夜)以来的秒数、毫秒数或微秒数(负数表示之前,正数表示之后):
范围 | 单位 |
---|---|
x < 31,536,000,000 | 秒 |
31,536,000,000 ≤ x < 31,536,000,000,000 | 毫秒 |
x ≥ 31,536,000,000,000 | 微秒 |
-- 使用给定模式将字符串转换为时间戳
TO_TIMESTAMP(<expr>, <pattern>)
如果给定两个参数,该函数根据第二个字符串中指定的模式将第一个字符串转换为时间戳。要指定模式,请使用说明符。说明符允许您定义所需的日期和时间格式。有关支持的说明符的完整列表,请参阅 日期和时间格式化。
返回类型
返回一个格式为 YYYY-MM-DD hh:mm:ss.ffffff
的时间戳:
-
返回的时间戳始终反映您的 Databend 时区。
- 当给定字符串中包含时区信息时,它将时间戳转换为 Databend 配置的时区对应的时间。换句话说,它会调整时间戳以反映 Databend 中设置的时区。
-- 设置时区为 'America/Toronto' (UTC-5:00, 东部标准时间)
SET timezone = 'America/Toronto';
SELECT TO_TIMESTAMP('2022-01-02T01:12:00-07:00'), TO_TIMESTAMP('2022/01/02T01:12:00-07:00', '%Y/%m/%dT%H:%M:%S%::z');
┌────────────────────────────────────────────────────────────────────────────────────────────────────────────── ──┐
│ to_timestamp('2022-01-02t01:12:00-07:00') │ to_timestamp('2022/01/02t01:12:00-07:00', '%y/%m/%dt%h:%m:%s%::z') │
├───────────────────────────────────────────┼────────────────────────────────────────────────────────────────────┤
│ 2022-01-02 03:12:00 │ 2022-01-02 03:12:00 │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘- 如果给定字符串中不包含时区信息,它将假定时间戳属于当前会话配置的时区。
-- 设置时区为 'America/Toronto' (UTC-5:00, 东部标准时间)
SET timezone = 'America/Toronto';
SELECT TO_TIMESTAMP('2022-01-02T01:12:00'), TO_TIMESTAMP('2022/01/02T01:12:00', '%Y/%m/%dT%H:%M:%S');
┌────────────────────────────────────────────────────────────────────────────────────────────────┐
│ to_timestamp('2022-01-02t01:12:00') │ to_timestamp('2022/01/02t01:12:00', '%y/%m/%dt%h:%m:%s') │
├─────────────────────────────────────┼──────────────────────────────────────────────────────────┤
│ 2022-01-02 01:12:00 │ 2022-01-02 01:12:00 │
└────────────────────────────────────────────────────────────────────────────────────────────────┘ -
如果给定字符串匹配此格式但没有时间部分,它会自动扩展为此模式。填充值为 0。
-
如果转换失败,将返回错误。为了避免此类错误,您 可以使用 TRY_TO_TIMESTAMP 函数。
root@localhost:8000/default> SELECT TO_TIMESTAMP('20220102');
error: APIError: ResponseError with 1006: cannot parse to type `TIMESTAMP` while evaluating function `to_timestamp('20220102')`
root@localhost:8000/default> SELECT TRY_TO_TIMESTAMP('20220102');
SELECT
try_to_timestamp('20220102')
┌──────────────────────────────┐
│ try_to_timestamp('20220102') │
├──────────────────────────────┤
│ NULL │
└──────────────────────────────┘