ClickHouse中toDateTime64函数的第二个参数含义是什么?
关于ClickHouse
toDateTime64()函数第二个参数的说明 那个整数参数其实是小数精度位数,用来指定DateTime64类型保留的小数部分长度,对应时间的亚秒级精度:
- 当参数为0时,就是普通的DateTime精度(只到秒),和
toDateTime()效果类似 - 参数为3时,保留到毫秒(10^-3秒),这也是你给出的官方示例里用3的原因
- 参数为6时,保留到微秒(10^-6秒)
- 参数为9时,保留到纳秒(10^-9秒)
举个更直观的例子:
-- 保留3位小数(毫秒级) SELECT toDateTime64('2019-01-01 00:00:00.123456', 3, 'Europe/Moscow'); -- 结果会是:2019-01-01 00:00:00.123 -- 保留6位小数(微秒级) SELECT toDateTime64('2019-01-01 00:00:00.123456', 6, 'Europe/Moscow'); -- 结果会是:2019-01-01 00:00:00.123456
这个精度参数决定了DateTime64类型存储的时间粒度,同时在查询时也需要和目标字段的DateTime64精度保持一致,不然可能会出现匹配不上的情况——比如你的示例里timestamp字段应该是DateTime64(3)类型,用toDateTime64(...,3,...)才能准确匹配。
内容的提问来源于stack exchange,提问作者Yaroslav Zinchenko
相关产品推荐
相关产品推荐

