mysql 查询每天某个时间段的数据及最接近的记录数据

编程入门 行业动态 更新时间:2024-10-11 11:17:55

mysql 查询每天某个时间段的<a href=https://www.elefans.com/category/jswz/34/1771445.html style=数据及最接近的记录数据"/>

mysql 查询每天某个时间段的数据及最接近的记录数据

一 、 查某个时间段的数据

早高峰时间段查询(早上7点到九点)

SELECT * FROM table WHERE  hour(时间字段) BETWEEN 07 and 09 

但是遇到一个问题就是要查凌晨的数据就不行了
因为凌晨是当天到第二天 所以:

凌晨数据查询(晚上10点到次日凌晨6点)

SELECT * FROM table WHERE (hour(时间字段)>=22 or 6 >=hour(时间字段))

二、 查最接近的记录

查询场景:现在的需求是查询年龄最接近20岁的用户,获取前5个

我现在的数据库记录用户年龄的字段记录格式是"1995-05-20",字段名称birthday

解决思路:

1.首先查询时转换成用户年龄

日期格式转年龄的方法:

(1)当前年份 - 日期格式中的年份

date_format(now(), '%Y') - from_unixtime(unix_timestamp(birthday), '%Y')

(2)当前年份 - 日期格式中的年份(获取方法不同)

date_format(now(), '%Y') - year(birthday)

2.通过order by asb() 排序获取最接近的数据

完整的语句:

SELECT(date_format(now(), '%Y') - year(birthday)) as age
FROM  user
WHEREis_anchor = 1
ORDER BY abs(20 - age)
limit 0,5

 

三、查某个时间段的且最接近的记录数据

查询场景:现在的需求是查询某个用户在2020年中最早出单时间(凌晨5点-9点,且最接近5点的数据)和2020年中最晚出单时间(晚上10点-次日凌晨4点,取最靠近凌晨4点的出单时间)

我现在的数据库记录出单时间的字段记录格式是"yyyy-MM-dd HH:mm:ss",字段名称GMT_MODIFIED

解决思路:

最早出单时间:

1. 首先查询凌晨5-9点(小时 5-8)的数据, hour(p.GMT_MODIFIED) BETWEEN 05 and 08

2.再查最接近5点的数据 select   hour(p.GMT_MODIFIED) as hourss from  hip_sal_policy p  where   ORDER BY abs(5 - hourss)

最晚出单时间:

1. 首先查询晚上10点-次日凌晨4点(小时 22-4)的数据, hour(p.GMT_MODIFIED) >= 22 or 04 >= hour(p.GMT_MODIFIED)

2.再查最接近4点的数据 select   hour(p.GMT_MODIFIED) as hourss from  hip_sal_policy p  where   ORDER BY abs(4 - hourss)

完整sql 

最早出单时间(凌晨5-9点)
selectDATE_FORMAT(p.GMT_MODIFIED,'%H:%i') policyTime,hour(p.GMT_MODIFIED) as hourss
from  hip_sal_policy p
wherep.status ='1' and p.creator = #{userId}and p.GMT_MODIFIED BETWEEN '2020-01-01 00:00:00' and '2020-12-31 23:59:59'and hour(p.GMT_MODIFIED) BETWEEN 05 and 08ORDER BY abs(5 - hourss)limit 1
最晚出单时间(晚上10点-次日凌晨4点)selectDATE_FORMAT(p.GMT_MODIFIED,'%H:%i') policyTime,hour(p.GMT_MODIFIED) as hourss
from  hip_sal_policy p
wherep.status ='1' and p.creator = '675609'and p.GMT_MODIFIED BETWEEN '2020-01-01 00:00:00' and '2020-12-31 23:59:59'and    (hour(p.GMT_MODIFIED) >= 22 or 04 >= hour(p.GMT_MODIFIED))ORDER BY abs(4 - hourss)limit 1

 

 

更多推荐

mysql 查询每天某个时间段的数据及最接近的记录数据

本文发布于:2024-02-06 12:17:44,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1748943.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据   时间段   最接近   mysql

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!