业务场景:
我们需要查询从表t里查询某一天按照5分钟为一段间隔通过高速门架的车流量。部分脱敏数据如下
表t里包含time,id,chepai,部分数据为(’2020-02-23 00:43:27′,’某高速门架0010′,’浙xxxxxx’)
按照正常情况下我们的限定where条件是time >= ‘2020-02-23 0:00’ and time < ‘2020-02-23 0:00’ 或者 between等,但是这样来写一两个还行,要每隔5分钟切分一次,需要写二百多,过于麻烦
解决思路:
- 需要把时间进行下降到其5分钟开始的最初时间处理,即00:12:30是在00:10:00-00:15:00之间,要转换为00:10:00,同样10:21:39在10:20:00-10:25:00,所以转换为10:20:00,这样一来五分钟内的数据都下降统一成5分初的时间,也就是5分钟这一段的数据就有了。当然也可以把数据进行上升处理,只不过23:55:00-23:59:59这个时间段就上升到第二天的00:00了
- 对时间段进行下降处理思想有了,问题是如何实现:可以把时间字段转换为数字整形,即每一个时间都对应着一串数字,只要把这个数字由年月日时分秒切割相加再除以5,然后向下取整再乘以5,最后再转换为时间,这样就能达到下降了,这里的核心思想就是无法整除5的那部分余数就是5分钟这个时间段的,现在我们向下取整,比如2.75向下取整是2,那么就能把时间下降了。同样的如果是每隔10分钟,那就是除以10,每隔1小时的,直接substr切分时间字段就可以了
- 这里使用强大的两个函数from_unixtime和unix_timestamp来完成,具体使用方法参加我的旧文脚本实现:
到此这篇关于sql时间段切分实现每隔x分钟出一份高速门架车流量的文章就介绍到这了,更多相关sql时间段切分内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!