欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

为什么插入 Clickhouse 数据库的日期格式不正确?

最编程 2024-05-08 11:15:48
...

先"重现"一下"问题"

先创建一个有DateTime类型的表

create table test (a DateTime, b String) ENGINE = TinyLog

插入一条数据

insert into test values (2019-09-25, 'case01')

查询

select * from test

结果竟然是

2105-06-18 21:52:51  case01

感觉有点诡异

跳过分析过程,直接说问题答案:

DateTime类型需要写数字和字符串类型,比如

insert into test values (0, 'case01')

insert into test values ('2019-09-25 15:50:01', 'case01')

都是可以的

字符类型会被转换为时间类型,数字代表是Unix epoch time

当数字是n时(为正数),代表的是UTC 1970-01-01 00:00:00 +n秒

当数字是-n时(为负数),代表的是UTC 2106-02-07 06:28:16 -n秒

当写法是诸如2019-09-25时(没有加引号), 它被理解为 -20190925

没看源代码,猜测它的行为是:发现负号(不管负号的位置和个数)后去掉所有负号,得到数字n,n转换为负数-n

不信你可以试试

insert into test values (2019--0-9--2-5--, 'case02')