我试着在clickhouse里比较datetime。但它似乎是以某种方式运作的。我的表中有一列要与之比较(now(),'utc')。如果该列中的datetime值小于(now(),'utc')时间,则我要从该记录中选择数据。
我创建了一个 create table my_table (
mytimeDateTime,
data' [type]) ENGINE= engine我要排队
Select data from my_table where mytime < toDateTime(now(), 'UTC')` 即使mytime>todatetime(now(),'utc'),它也总是认为mytime<todatetime(now(),'utc')
2条答案
按热度按时间v1uwarro1#
在我看来,你插入数据的方式可能出了问题,或者你的clickhouse版本有一个bug。
下面的示例演示了如何在我的19.15.4.10服务器上按预期只选择前面的行。注意select sleep()以确保now()调用不同。
在我的服务器上,选择now()还是转换它并不重要。我还尝试了您最初定义表的方式,这也很有效。因此人们认为你的数据有问题。
ktca8awb2#
这个问题背后的原因是在clickhouse中,它将datetime和datetime('utc')作为不同的对象,因此它们之间的比较无法按预期进行。因为我想与(now(),'utc')进行比较,所以必须更改
mytime
作为DateTime ('UTC')
.我得把table换了
create table my_table (
mytimeDateTime ('UTC'),
data' [type]) ENGINE= engine`