DateTime64
允许存储一个时间点,可以表示为日历日期和一天中的时间,并具有定义的亚秒精度
刻度大小(精度):10-precision 秒。有效范围:[0 : 9]。 通常使用 - 3(毫秒),6(微秒),9(纳秒)。
语法:
内部将数据存储为自纪元开始(1970-01-01 00:00:00 UTC)以来的“刻度”数量,类型为 Int64。刻度分辨率由精度参数决定。此外,DateTime64
类型可以存储整个列的时区,这影响了DateTime64
类型值以文本格式显示时的方式以及以字符串指定的值如何解析('2020-01-01 05:00:01.000')。时区并不存储在表的行中(或结果集中),而是存储在列元数据中。详细信息请参见 DateTime。
支持的值范围:[1900-01-01 00:00:00, 2299-12-31 23:59:59.99999999]
注意:最大值的精度为8。如果使用最大精度9位(纳秒),则支持的最大值为 2262-04-11 23:47:16
(UTC)。
示例
- 创建一个包含
DateTime64
类型列的表并插入数据:
- 当将datetime作为整数插入时,它会被视为适当缩放的Unix时间戳(UTC)。
1546300800000
(精度为3)代表'2019-01-01 00:00:00'
UTC。然而,由于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
类型值的时区:
- 时区转换
另请参阅