Druid技术咨询:如何在TIME_FORMAT函数中转义字符
Druid TIME_FORMAT中转义T的正确方法
在Druid的SQL中,TIME_FORMAT函数遵循SimpleDateFormat的格式化规则,要将T作为字面量保留,需要用单引号包裹T,同时因为SQL字符串本身用单引号界定,所以内部的单引号要转义为两个连续单引号。
修改后的SQL语句如下:
SELECT TIME_FORMAT(__time, 'YYYY/MM/dd''T''hh') AS "hour", SUM(cost) FROM my_table WHERE __time >= CURRENT_TIMESTAMP - INTERVAL '3' DAY GROUP BY TIME_FORMAT(__time, 'YYYY/MM/dd''T''hh')
原理:
- SimpleDateFormat中,被单引号包裹的内容会被当作纯文本处理,不会被解析为格式占位符
- 在SQL字符串里,要表示一个单引号,必须用两个连续单引号进行转义,这样Druid才能正确识别字面量
T
内容的提问来源于stack exchange,提问作者Dyson
相关产品推荐
相关产品推荐

