首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按日期划分的MySQL查询组(12小时间隔)

按日期划分的MySQL查询组(12小时间隔)
EN

Stack Overflow用户
提问于 2022-04-13 04:48:30
回答 2查看 573关注 0票数 0

我编写了一个sql查询,用于获取在一段时间内为绘图图(grafana或图表js)创建的用户数量,我的sql查询是

代码语言:javascript
运行
复制
 SELECT
  date(user.created_date) as "time",
  count(distinct user.id) as Number Of User,
  status as status
FROM user
WHERE
  created_date >= FROM_UNIXTIME(1649635200) AND 
  created_date < FROM_UNIXTIME(1649894399)
GROUP BY user.status, date(user.created_date)
ORDER BY date(user.created_date)

在这个查询中,创建的日期是从前端动态传递的,现在我得到的结果如下,

现在,每当我从最后24小时/12小时中选择日期筛选器时,有些结果就不存在了,

有什么方法可以将我的sql查询修改成按created_date分组的方法吗?例如,现在的查询结果是11/04/2022-5用户(创建了应用程序),我想要这样的查询结果: 11/04/2022 00:00:002-2用户创建的11/04/2022 12:00:00 -3用户。

EN

Stack Overflow用户

回答已采纳

发布于 2022-04-14 07:37:37

在grafana中有一个已归档的$__timeFrom()$__timeTo(),在此基础上,我重写了我的查询:

代码语言:javascript
运行
复制
SELECT
  (CASE 
    WHEN HOUR(TIMEDIFF($__timeFrom(), $__timeTo())) <= 24
    THEN user.created_date
    ELSE date(user.created_date) end) AS "time",
  count(distinct user.id) as Users,
FROM user
WHERE
  user.created_date >= $__timeFrom() AND 
  user.created_date < $__timeTo() AND
GROUP BY CASE
  when HOUR(TIMEDIFF($__timeFrom(), $__timeTo())) <= 24
  then user.created_date
  else date(created_date) end
ORDER BY CASE
  when HOUR(TIMEDIFF($__timeFrom(), $__timeTo())) <= 24
  then user.created_date
  else date(created_date) end;
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71852020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档