ruby Clickhouse活动记录日期时间精度问题

vxbzzdmp  于 2023-08-04  发布在  Ruby
关注(0)|答案(1)|浏览(87)

我有gems clickhouse 0.1.10,clickhouse-activerecord 0.5.14,pg 1.4.6和rails 7.0.4.3。ClickHouse服务器版本23.4.2.11,postgresql服务器15.3。我的clickhouse表ddl:

create table default.tests
(
    id         UUID default generateUUIDv4(),
    created_at DateTime64(6)
)
engine = MergeTree PARTITION BY toMonth(created_at) ORDER BY (id, created_at);

字符串
我的模型是测试。当我创建记录时,如:

Test.create


这将产生SQL查询:

INSERT INTO tests (created_at) VALUES ('2023-06-10 08:41:57')


正如你所看到的,没有精度(微秒)。我可以这样定义rails time db格式:

Time::DATE_FORMATS[:db] = '%Y-%m-%d %H:%M:%S.%6N'


然后如果我创建记录,这将产生正确的结果:

INSERT INTO tests (created_at) VALUES ('2023-06-10 08:41:57.123123')


但这打破了我的PostgreSQL模型SQL查询!例如,如果我有模型PgTest,如果我像这样创建记录:

PgTest.create


这将在我的postgresql数据库中产生不正确的精度SQL查询(重复精度):

INSERT INTO pg_tests (created_at) VALUES ('2023-06-10 08:41:57.123123.123123')


在callback around_create中设置Time db格式-对我来说不是一个选项。

webghufk

webghufk1#

我在https://github.com/PNixx/clickhouse-activerecord/issues/95 Gem clickhouse-activerecord <= 0.5.15上创建了一个问题,无法正确使用rails 7添加插入查询的精度。这将在下一个gem版本中修复。所以我就等着这个。

相关问题