3

我想同时按yyyymmdd(日期)和hhmmss(时间)过滤一些数据,但 clickhouse 不支持time类型。所以我选择datetime将它们结合起来。但是如何做这样的事情:

这是dolphindb(支持second类型来表示的代码hhmmss

select avg(ofr + bid) / 2.0 as avg_price
from taq
where
    date between 2007.08.05 : 2007.08.07,
    time between 09:30:00 : 16:00:00
group by symbol, date

这是 的代码clickhouse,但逻辑有问题的代码。

SELECT avg(ofr + bid) / 2.0 AS avg_price
FROM taq
WHERE
    time BETWEEN '2007-08-05 09:30:00' AND '2007-08-07 16:00:00'
GROUP BY symbol, toYYYYMMDD(time)
;

如何像dolphindb代码一样在sql中表达?

4

1 回答 1

4

假设您只想在正常交易时间内平均交易价格,不包括盘后交易,那么可能的解决方案:

SELECT avg(ofr + bid) / 2.0 AS avg_price
FROM taq
WHERE
    toYYYYMMDD(time) BETWEEN 20070805 AND 20070807 AND
    toYYYYMMDDhhmmss(time)%1000000 BETWEEN 93000 and 160000
GROUP BY symbol, toYYYYMMDD(time)

这将过滤指定日期和时间内的taq表。

于 2019-04-22T09:10:29.957 回答