跳到主要内容
跳到主要内容

Time

数据类型 Time 表示具有小时、分钟和秒组成部分的时间。它独立于任何日历日期,适用于不需要日期、月份和年份组成部分的值。

语法:

Time

文本表示范围:[-999:59:59, 999:59:59]。

分辨率:1秒。

实现细节

表示和性能
数据类型 Time 内部存储一个编码秒数的带符号32位整数。类型为 TimeDateTime 的值具有相同的字节大小,因此性能可比较。

规范化
在解析字符串为 Time 时,时间组成部分是被规范化而不是被验证的。例如,25:70:70 被解释为 26:11:10

负值
支持并保留前导负号。负值通常来自对 Time 值的算术运算。对于 Time 类型,负输入在文本(例如,'-01:02:03')和数字输入(例如,-3723)中都被保留。

饱和
一天中的时间组件被限制在范围[-999:59:59, 999:59:59]内。超出999小时(或低于-999)的值通过文本表示为 999:59:59(或 -999:59:59)。

时区
Time 不支持时区,即 Time 值在没有区域上下文的情况下被解释。将时区指定为 Time 的类型参数或在值创建期间会引发错误。同样,尝试在 Time 列上应用或更改时区也不被支持,结果会导致错误。Time 值不会在不同的时区下被静默重新解释。

示例

1. 创建一个具有 Time 类型列的表并向其中插入数据:

CREATE TABLE tab
(
    `event_id` UInt8,
    `time` Time
)
ENGINE = TinyLog;
-- Parse Time
-- - from string,
-- - from integer interpreted as number of seconds since 00:00:00.
INSERT INTO tab VALUES (1, '14:30:25'), (2, 52225);

SELECT * FROM tab ORDER BY event_id;
   ┌─event_id─┬──────time─┐
1. │        1 │ 14:30:25 │
2. │        2 │ 14:30:25 │
   └──────────┴───────────┘

2.Time 值进行过滤

SELECT * FROM tab WHERE time = toTime('14:30:25')
   ┌─event_id─┬──────time─┐
1. │        1 │ 14:30:25 │
2. │        2 │ 14:30:25 │
   └──────────┴───────────┘

Time 列的值可以使用 WHERE 谓词中的字符串值进行过滤。它将自动转换为 Time

SELECT * FROM tab WHERE time = '14:30:25'
   ┌─event_id─┬──────time─┐
1. │        1 │ 14:30:25 │
2. │        2 │ 14:30:25 │
   └──────────┴───────────┘

3. 检查结果类型:

SELECT CAST('14:30:25' AS Time) AS column, toTypeName(column) AS type
   ┌────column─┬─type─┐
1. │ 14:30:25 │ Time │
   └───────────┴──────┘

另请参见