请选择 进入手机版 | 继续访问电脑版

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

[复制链接]
苍野狼步 发表于 2021-1-1 18:30:04 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
一 、 查某个时间段的数据

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

  1. SELECT * FROM table WHERE  hour(时间字段) BETWEEN 07 and 09
复制代码
但是遇到一个问题就是要查凌晨的数据就不可了
因为凌晨是当天到第二天 所以:
凌晨数据查询(晚上10点到越日凌晨6点)

  1. 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() 排序获取最靠近的数据
完整的语句:
  1. SELECT  (date_format(now(), '%Y') - year(birthday)) as ageFROM  userWHERE  is_anchor = 1ORDER 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 
  1. 最早出单时间(凌晨5-9点)select  DATE_FORMAT(p.GMT_MODIFIED,'%H:%i') policyTime,  hour(p.GMT_MODIFIED) as hourssfrom  hip_sal_policy pwhere    p.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 08   ORDER BY abs(5 - hourss)    limit 1
复制代码
  1. 最晚出单时间(晚上10点-越日凌晨4点)select   DATE_FORMAT(p.GMT_MODIFIED,'%H:%i') policyTime,   hour(p.GMT_MODIFIED) as hourssfrom  hip_sal_policy pwhere   p.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
复制代码
 
 

来源:https://blog.csdn.net/qq_31594647/article/details/112004736
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )