文档

Quick BI数据库中字段类型为TimeStamp类型,SQL生成数据集时,如何通过变量给该字段传递值?

更新时间:
一键部署

问题描述

Quick BI数据库中字段为timestamp类型,SQL生成数据集时,如何通过变量给该字段传递值?变量定义为Quick BI的日期类型,通过查询控件传递值之后,会使用DATE_FORMAT()函数对字段进行转换,解析出来的SQL语句执行是null。

生成数据集的SQL语句:

查询控件配置情况:

仪表板中传递值之后,解析的SQL语句对传递的日期字段用DATE_FORMAT函数进行了日期转换,导致查询结果为空:

问题原因

生成数据集的SQL语句中,直接使用参数,Quick BI会自动将timestamp类型字段使用DATE_FORMAT函数格式化显示,格式化显示的值和前端查询控件输入的值不匹配,导致图表查询数据时为空。

解决方案

1.SQL生成数据集时,可以对变量数据进行类型转换,使用UNIX_TIMESTAMP函数将前端变量传递进来的值转换为timestamp类型,具体使用占位符即可。

SELECT
count(
DISTINCT ( qqq.student_id ))
FROM
pre_xthk_virtue.xthk_course q
JOIN pre_xthk_virtue.xthk_course_class qq ON q.id = qq.course_id
JOIN pre_xthk_virtue.xthk_student_lesson qqq ON qqq.class_id = qq.id
WHERE
qqq.refund_status != 2
AND q.city_id = c.city_id
AND q.subject_id = c.subject_id
and qqq.created_at >= UNIX_TIMESTAMP('${start.get(0)}')
and qqq.created_at <= UNIX_TIMESTAMP('${start.get(1)}')

另外,也可以使用from_unixtime函数将timestamp类型的字段进行转换,并以指定格式显示。

适用于

  • Quick BI
  • 本页导读
文档反馈