DateTime64 类型还可以存储整个列统一的 时区,这会影响 DateTime64 类型的值以文本 format 显示的方式,以及将字符串形式指定的值 (‘2020-01-01 05:00:01.000’) parse 的方式。时区 不存储在表的行中 (或结果集中) ,而是存储在列元数据中。详见 DateTime。
支持的值范围:[1900-01-01 00:00:00, 2299-12-31 23:59:59.999999999]
小数点后的位数取决于 精度 参数。
注意:最大值的 精度 为 8。如果使用 9 位数字 (纳秒) 的最大 精度,则 UTC 中支持的最大值为 2262-04-11 23:47:16。
示例
- 创建一个包含
DateTime64类型列的表,并向其中插入数据:
- 以整数形式插入 datetime 时,会将其视为按相应精度缩放的 Unix 时间戳 (UTC) 。
1546300800000(精度 为 3) 表示 UTC 的'2019-01-01 00:00:00'。但由于timestamp列指定了Asia/Istanbul(UTC+3) 时区,因此在以字符串形式输出时,该值会显示为'2019-01-01 03:00:00'。以十进制数形式插入 datetime 时,处理方式与整数类似,不同之处在于:小数点前的值是精确到秒 (含秒) 的 Unix 时间戳,小数点后的值会被视为 精度。 - 以字符串形式插入 datetime 值时,会将其视为采用列时区。
'2019-01-01 00:00:00'会被视为采用Asia/Istanbul时区,并存储为1546290000000。
- 过滤
DateTime64值
DateTime 不同,DateTime64 类型的值不会自动由 String 转换而来。
toDateTime64 函数会将所有值都按小数处理,因此精度需要
在小数点后给出。
- 获取
DateTime64类型值的时区:
- 时区转换