1.3.6.2.2. 转换为 CLICKHOUSE
1.3.6.2.2.1. select_first, select_last 聚合函数
描述
支持对select_first, select_last 聚合函数的转换, 转换为argMin, argMax
语法
支持的格式如下(同influxdb3):
select_first(expr, time)['time']
select_first(expr, time)['value']
select_last(expr, time)['time']
select_last(expr, time)['value']
示例
-- 源SQL:
select selector_first(my_field, time)['time'] as _time,
selector_first(my_field, time)['value']
from base_test
where my_tag='val6'
and time <= '1970-01-10T00:00:00Z'
and time >= '1970-01-01T00:00:00Z'
order by _time
select convert_tz(selector_last(my_field, time)['time'], 'UTC', 'Asia/Shanghai') as _time,
selector_last(my_field, time)['value']
from base_test
where my_tag='val6'
and time <= '1970-01-10T00:00:00Z'
and time >= '1970-01-01T00:00:00Z'
order by _time
-- 目标SQL:
SELECT argMin(tuple(my_field, time), time).2 AS _time,
argMin(tuple(my_field, time), time).1
FROM base_test
WHERE my_tag='val6'
AND time<=parseDateTime64BestEffort('1970-01-10T00:00:00Z', 9)
AND time>=parseDateTime64BestEffort('1970-01-01T00:00:00Z', 9)
ORDER BY _time
SELECT toTimeZone(argMax(tuple(my_field, time), time).2, 'Asia/Shanghai') AS _time,
argMax(tuple(my_field, time), time).1
FROM base_test
WHERE my_tag='val6'
AND time<=parseDateTime64BestEffort('1970-01-10T00:00:00Z', 9)
AND time>=parseDateTime64BestEffort('1970-01-01T00:00:00Z', 9)
ORDER BY _time
1.3.6.2.2.2. 时间格式to_char/date_format
描述
支持对to_char/date_format设置时间格式的转换,转换为formatDateTime
语法
支持的格式如下:
to_char/date_format(expr, format)
警告
21.4.5.46 版本的formatDateTime的format不支持f(毫秒),z(时区)
示例
-- 源SQL:
select date_format(time, '%Y-%m-%dT%H:%M:%S'), my_tag, my_field from base_test where my_tag='val6'
select date_format(convert_tz(time, 'UTC','Asia/Shanghai'), '%Y-%m-%dT%H:%M:%S'), my_tag, my_field from base_test where my_tag='val6'
-- 目标SQL:
SELECT formatDateTime(time, '%Y-%m-%dT%H:%M:%S'),my_tag,my_field FROM base_test WHERE my_tag='val6'
SELECT formatDateTime(toTimeZone(time, 'Asia/Shanghai'), '%Y-%m-%dT%H:%M:%S'),my_tag,my_field FROM base_test WHERE my_tag='val6'
1.3.6.2.2.3. now
描述
now 转换为 now64, 在clickhouse中now 只到秒
语法
支持的格式如下:
now()
示例
-- 源SQL:
select date_format(time, '%Y-%m-%dT%H:%M:%S'), my_tag, my_field from base_test where my_tag='val6'
select date_format(convert_tz(time, 'UTC','Asia/Shanghai'), '%Y-%m-%dT%H:%M:%S'), my_tag, my_field from base_test where my_tag='val6'
-- 目标SQL:
SELECT formatDateTime(time, '%Y-%m-%dT%H:%M:%S'),my_tag,my_field FROM base_test WHERE my_tag='val6'
SELECT formatDateTime(toTimeZone(time, 'Asia/Shanghai'), '%Y-%m-%dT%H:%M:%S'),my_tag,my_field FROM base_test WHERE my_tag='val6'