千家信息网

如何实现sql中时间以5分钟半个小时任意间隔分组

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要介绍了如何实现sql中时间以5分钟半个小时任意间隔分组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。开发中遇到过问题就是对
千家信息网最后更新 2025年01月20日如何实现sql中时间以5分钟半个小时任意间隔分组

这篇文章主要介绍了如何实现sql中时间以5分钟半个小时任意间隔分组,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

开发中遇到过问题就是对时间以半个小时分钟分组,如统计08:00-08:30的人数,08:30-09:00的人数,貌似sql中没有这样的函数吧,直接从数据库里查出来,在java里分组也太low了吧

想到方法1 自定义函数,自己实现时间的半个小时转换,统计时调用函数

CREATE FUNCTION `date_half_hour_format`(in_date TIMESTAMP) RETURNS TIMESTAMPBEGIN DECLARE out_date TIMESTAMP; DECLARE s_date VARCHAR(255); DECLARE s_minute VARCHAR(2); DECLARE int_minute INT;  SET s_minute = SUBSTRING(in_date, 15, 2); SET int_minute = CAST(s_minute AS SIGNED);  IF int_minute <= 29 THEN  SET int_minute = 0;  SET s_date = CONCAT(LEFT(in_date, 14),'0',int_minute); ELSE  SET int_minute = 30;  SET s_date = CONCAT(LEFT(in_date, 14),int_minute); END IF;   SET out_date = STR_TO_DATE(s_date,'%Y-%m-%d %H:%i');  RETURN out_date;  END

方法2 学过c语言更清楚c语言创建时间都是一个long的时间戳,可以对时间做除法运算,就是时间long的值除以30*60,这样就能得出半个小时的时间了,mysql中有函数unix_timestamp获取long的时间,从long转date的form_unixtime

SELECT FROM_UNIXTIME((UNIX_TIMESTAMP(CURRENT_TIMESTAMP) DIV 1800)*1800)

这样就可以按任意时间分组了

ps:SQL Server 时间查询

select dateadd(dd,-day(getdate()) + 1,getdate()) '当月起始时间'  //查询当月起始时间select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)) '当月结束时间'  //查询当月结束时间select dateadd(dd,-day(dateadd(month,-1,getdate()))+1,dateadd(month,-1,getdate())) '上月起始时间'  //查询上月起始时间select dateadd(dd,-day(getdate()),getdate()) '上月结束时间'  //查询上月结束时间select dateadd(quarter,datediff(quarter,0,getdate())-1,0) as '当前季度的上个季度初'  //查询当前季度的上个季度开始时间select dateadd(quarter,datediff(quarter,0,getdate()),-1) as '当前季度的上个季度末'  //查询当前季度的上个季度结束时间select dateadd(quarter,datediff(quarter,0,getdate()),0) as '当前季度的第一天'  //查询当前季度起始时间select dateadd(quarter,1+datediff(quarter,0,getdate()),-1) as '当前季度的最后一天'  //查询当前季度结束时间select dateadd(quarter,1+datediff(quarter,0,getdate()),0) as '当前季度的下个季度初'  //查询当前季度下个季度开始时间select dateadd(quarter,2+datediff(quarter,0,getdate()),-1) as '当前季度的下个季度末'  //查询当前季度下个季度结束时间select dateadd(year,datediff(year,0,DATEADD(year,-1,getdate())),0) '去年的第一天'  //去年的第一天select dateadd(year,datediff(year,0,getdate()),-1) '去年最后一天'  //去年的最后一天select dateadd(year, datediff(year, 0, getdate()), 0) '当年的第一天'  //当年的第一天select dateadd(year,datediff(year,0,dateadd(year,1,getdate())),-1) '当年的最后一天'  //当年的最后一天

感谢你能够认真阅读完这篇文章,希望小编分享的"如何实现sql中时间以5分钟半个小时任意间隔分组"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

时间 季度 查询 小时 分组 起始 函数 篇文章 中时 人数 就是 方法 语言 统计 清楚 价值 兴趣 同时 数据 数据库 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 易保网络技术上海有限. 互联网发展高科技创新 现金贷业务软件开发 关于金融网络安全的选择题 计算机软件开发类证书有哪些 安装软件开发流程 软件开发组领导怎么称呼 数据库发展与新技术课程 政府软件开发一般哪家好 创建一个管理数据库 ofo扫码显示服务器波动 软件开发与应用设计专业 广电网络公司网络技术是什么性质 腾讯云服务器哪个版本好用 特斯拉503服务器维护是什么 哈尔滨诚德软件开发 昊月互联网科技总部 软件开发公司的预算 关于网络安全的四个认识 企业内网服务器安全 区块链物联网网络安全市场分析 南开区信息化软件开发价格走势 网络安全岗位工作环境 江苏电力数显钟服务器 网络机房需要网络安全设备 dw中与数据库的连接 tcga和r2等数据库 松江区电话软件开发供应商有哪些 数据库中的表怎么保存 科技企业互联网营销
0