当前位置: 首页 > news >正文

mysql 监控开始时间,结束时间,平均取n个时间点

需求
最近1小时 1分钟 60个点
最近3小时 5分钟 36个点
最近6小时 10分钟 36个点
最近12小时 20分钟 36个点
最近1天 1小时 24个点
最近3天 3小时 24个点
最近1周 6小时 28个点

如果你的递归查询支持递归CTE(如MySQL 8.0+),可以使用递归查询来生成平均分布的时间点。下面是一个示例,假设开始时间为 start_time,结束时间为 end_time,要取n个时间点:

WITH RECURSIVE TimePoints AS (SELECT TIMESTAMPADD(SECOND, 0, start_time) AS time_point, 1 AS point_numberUNION ALLSELECT TIMESTAMPADD(SECOND, (UNIX_TIMESTAMP(end_time) - UNIX_TIMESTAMP(start_time)) / (n - 1) * point_number, start_time), point_number + 1FROM TimePointsWHERE point_number < n
)
SELECT time_point
FROM TimePoints;

解释:
WITH RECURSIVE TimePoints AS: 这部分定义了一个递归CTE,用于生成时间点序列。
SELECT TIMESTAMPADD(SECOND, 0, start_time) AS time_point, 1 AS point_number: 这是递归的起始部分,设置第一个时间点和计数器。
SELECT TIMESTAMPADD(SECOND, (UNIX_TIMESTAMP(end_time) - UNIX_TIMESTAMP(start_time)) / (n - 1) * point_number, start_time), point_number + 1: 这是递归部分,通过计算时间段的秒数差除以(n-1)来计算每个时间点的间隔。
WHERE point_number < n: 这个条件确保递归停止在生成n个时间点之后。
最后的 SELECT time_point FROM TimePoints: 返回生成的时间点序列。

例子:

WITH RECURSIVE TimePoints AS (SELECT TIMESTAMPADD(SECOND, 0, '2024-08-08 18:30:00') AS time_point, 1 AS point_numberUNION ALLSELECT TIMESTAMPADD(SECOND, (UNIX_TIMESTAMP('2024-08-08 21:30:00') - UNIX_TIMESTAMP('2024-08-08 18:30:00')) / (6 - 1) * point_number, '2024-08-08 18:30:00'), point_number + 1FROM TimePointsWHERE point_number < 6
)
SELECT time_point,(SELECT name
FROM op_custom_config_tb
ORDER BY ABS(TIMESTAMPDIFF(SECOND, update_time, time_point))
LIMIT 1) aaa
FROM TimePoints;

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Android 14适配记录
  • 智能爬虫ScrapeGraphAI尝鲜
  • Linux Shell编程--脚本运行与变量置换
  • C++ 重要特性探究
  • Java二十三种设计模式-享元模式(12/23)
  • vue3实现商品图片放大镜效果(芋道源码yudao-cloud 二开笔记)
  • Jmeter--http信息头管理器的使用(转载)
  • GESP 一级 比赛
  • C# Unity 面向对象补全计划 七大原则 之 开闭原则(OCP) 难度:☆ 总结:已经写好的就别动它了,多用继承
  • elementPlus中el-table的每列两行溢出隐藏怎么设置
  • PPT免费图片素材网站分享
  • VSCODE调试程序
  • 政府行政窗口神秘顾客调查表
  • 安装python+python的基础语法
  • Ubuntu23.10 安装kvm并使用nmtui创建桥接网络
  • 30天自制操作系统-2
  • 4. 路由到控制器 - Laravel从零开始教程
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • Docker下部署自己的LNMP工作环境
  • E-HPC支持多队列管理和自动伸缩
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • PAT A1050
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • 阿里云购买磁盘后挂载
  • 阿里云应用高可用服务公测发布
  • 闭包--闭包之tab栏切换(四)
  • 规范化安全开发 KOA 手脚架
  • 诡异!React stopPropagation失灵
  • 技术胖1-4季视频复习— (看视频笔记)
  • 前端面试之闭包
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 学习笔记:对象,原型和继承(1)
  • scrapy中间件源码分析及常用中间件大全
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • #if和#ifdef区别
  • #stm32整理(一)flash读写
  • (a /b)*c的值
  • (搬运以学习)flask 上下文的实现
  • (备份) esp32 GPIO
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (译)计算距离、方位和更多经纬度之间的点
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)C#调用WebService 基础
  • (转)Oracle存储过程编写经验和优化措施
  • ../depcomp: line 571: exec: g++: not found
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .net dataexcel winform控件 更新 日志
  • .NET 服务 ServiceController
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...