sql中时间以5分钟半个小时任意间隔分组的实现方法
作者:很叼么 发布时间:2024-01-25 04:23:39
标签:sql,时间,间隔,分组
开发中遇到过问题就是对时间以半个小时分钟分组,如统计08:00-08:30的人数,08:30-09:00的人数,貌似sql中没有这样的函数吧,直接从数据库里查出来,在java里分组也太low了吧
想到方法1 自定义函数,自己实现时间的半个小时转换,统计时调用函数
CREATE FUNCTION `date_half_hour_format`(in_date TIMESTAMP) RETURNS TIMESTAMP
BEGIN
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分钟半个小时任意间隔分组的实现方法,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:https://blog.csdn.net/Hendiaome/article/details/72457506


猜你喜欢
- Flask数据模型和连接数据库flask是基于MTV的结构,其中M指的就是模型,即数据模型,在项目中对应的是数据库。flask与数据库建立联
- 如下所示:import numpy as npZ=np.random.random((5,5))Zmax,Zmin=Z.max(axis=0
- Kettle中使用JavaScript调用jar包对文件内容进行MD5加密.本文主要知识点:JavaScript调用jar包对文件内容进行M
- 连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样)断开:exit (回车)创建授权:g
- 我们可以使用 asyncio.wait_for() 函数等待 asyncio 任务或协程超时完成。如果在任务完成之前超时已过,任务将被取消。
- python实现两个文本合并employee文件中记录了工号和姓名cat employee.txt:100 Jason Smith200 J
- 正则表达式的介绍1)在实际开发过程中经常会有查找符合某些复杂规则的字符串的需要,比如:邮箱、手机号码等,这时候想匹配或者查找符合某些规则的字
- 本文实例讲述了Python简单删除列表中相同元素的方法。分享给大家供大家参考,具体如下:去除列表中重复的元素,非常简单,直接上代码:a =
- question: Django中对数据库的调用非常的隐蔽,在各种复杂的模块互相拼接继承中很难发现获取数据库内容的部分来,开始试图理解一下下
- 说起交叉熵损失函数「Cross Entropy Loss」,脑海中立马浮现出它的公式:我们已经对这个交叉熵函数非常熟悉,大多数情况下都是直接
- 本文实例讲述了javascript设计模式 – 单例模式。分享给大家供大家参考,具体如下:介绍:单例模式是结构最简单的设计模式。单例模式用于
- 问题:在安装SP4补丁的时候,老是报验证密码错误。上网查了一下资料,发现是一个小bug。按照一下操作,安装正常。SQL Server补丁安装
- 1. 自己用python写了一个签到脚本经过测试已经可以成功打卡,于是研究了一下windows定时运行程序2. 创建定时任务2.1 打开“控
- Python里的正则表达式Python里的正则表达式,无需下载外部模块,只需要引入自带模块:re:import re官方re模块文档: ht
- 学生表:create table student( id number(8) primary key, name var
- 概述业务数据的上报主要分为:各个路由的PV上报;用户的点击行为上报;用户操作结果(分享是否成功)的数据上报等;通用和必须上报的数据,均在上报
- 前言面向对象编程对初学者来说不难理解但很难应用,虽然我们为大家总结过面向对象的三步走方法(定义类、创建对象、给对象发消息),但是说起来容易做
- 我们学习完推导式之后发现,推导式就是在容器中使用一个for循环而已,为什么没有元组推导式?原因就是“元组推导式&
- PyScript可以让你在浏览器中直接运行Python脚本,与JavaScript并排,在你的代码和网页之间进行双向互动。由Anaconda
- SQL Server有两种备份方式,一种是使用BACKUP DATABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志