InfluxDB查询:如何将字符串格式日期按升序排序
解决InfluxDB字符串日期按实际日期升序排列的问题
你的问题在于当前查询返回的是字符串格式的日期(DDMMYY),直接排序会遵循字符串字典序,导致日期顺序不符合实际逻辑(比如310323会排在010423之后,因为字符串比较时首字符3大于0)。要实现按实际日期升序,需要先将字符串转换为时间类型,再基于转换后的值排序。
修改后的查询语句
使用InfluxDB的to_time()函数将字符串日期转换为时间类型,再进行排序:
SELECT last("date_of_maturity") AS maturity_date FROM "maturity_date_data" GROUP BY "maturity" ORDER BY to_time(maturity_date, 'DDMMYY') ASC;
或者你也可以显式解析出时间字段,方便查看和排序:
SELECT last("date_of_maturity") AS maturity_date, to_time(last("date_of_maturity"), 'DDMMYY') AS parsed_maturity_date FROM "maturity_date_data" GROUP BY "maturity" ORDER BY parsed_maturity_date ASC;
说明
to_time()函数接受两个参数:待转换的字符串字段,以及字符串对应的日期格式(这里是DDMMYY,表示日-月-两位年份)。- 转换为时间类型后,
ORDER BY会按照实际的日期先后顺序排序,最终结果会是:310323 010423 020423 070423 140423 280423 260523 300623 290923 291223
内容的提问来源于stack exchange,提问作者Madan
相关产品推荐
相关产品推荐

