当前位置: 首页 > article >正文

hive sql,年月日 时分秒格式的数据,以15分钟为时间段,找出每一条数据所在时间段的上下界限时间值(15分钟分区)

  1. 获取当前的年月日 时分秒
select date_format(current_timestamp(), 'yyyy-MM-dd HH:mm:ss')

date_format(时间字段, ‘yyyy-MM-dd HH:mm:ss’) 将时间字段转为 2023-10-18 18:14:16 这种格式

  1. 在指定时间上增加15分钟
select from_unixtime(unix_timestamp(current_timestamp(),'yyyy-MM-dd HH:mm:ss') + (15 * 60) , 'yyyy-MM-dd HH:mm:ss')
  • unix_timestamp:获取当前时间的UNIX时间戳(从 1970-01-01 00:00:00 UTC 到指定时间的秒数),然后加上 15*60 秒,即15分钟,就得到了15分钟后的时间戳
  • from_unixtime:将UNIX时间戳转换回当前时区的的时间格式,这里时间格式设置为yyyy-MM-dd HH:mm:ss
  1. 时间字段按照15分钟进行分区

我在hive里面有一张表,时间字段为data_time,里面存储的值格式为 2023-10-17 10:32:45
业务需求是15分钟为一个区间,我现在要找到这条数据所在的区间,就比如上面这条数据所在的区间为
2023-10-17 10:30:00
2023-10-17 10:45:00

在hive sql里面的写法为

SELECT '2023-10-17 10:32:45',
     concat(substring('2023-10-17 10:32:45',1,14),cast(minute('2023-10-17 10:32:45')/15 as int)*15,':00'),
     from_unixtime(unix_timestamp(concat(substring('2023-10-17 10:32:45',1,14),cast(minute('2023-10-17 10:32:45')/15 as int)*15,':00')) + (15 * 60), 'yyyy-MM-dd HH:mm:ss')

使用时,将’2023-10-17 10:32:45’ 替换为你的时间字段,比如data_time即可,上面的sql语句可以直接执行查看结果,用作测试


http://www.kler.cn/a/109064.html

相关文章:

  • 【ARM Coresight OpenOCD 系列 5 -- arp_examine 使用介绍】
  • 第16章 SELECT 底层执行原理
  • 模型结构及对比
  • android studio导入OpenCv并改造成.kts版本
  • 蓝桥杯备考——算法
  • [面试]Mysql的锁机制
  • CSS3中的字体和文本样式
  • 禁用Google Chrome自动升级、查看Chrome版本号
  • React Hooks 实战案例
  • 一周通过Professional Scrum Master(PSM1)考试准备分享
  • 浅谈数据治理(一)
  • Maven第四章:配置文件详解
  • 如何使用 Docker 搭建 Jenkins 环境?从安装到精通
  • 数据库管理-第113期 Oracle Exadata 04-硬件选择(20231020)
  • Vue显示FFmpeg推的流
  • C/S架构和B/S架构
  • 09 用户态跟踪:如何使用eBPF排查应用程序?
  • python自动化测试(七):鼠标事件
  • Swift如何优雅漂亮的打印字典、json
  • RabbitMQ学习04
  • conda: error: argument COMMAND: invalid choice: ‘activate‘
  • 阿里云2023年双11活动时间、活动入口、活动内容详细解读
  • 程序化交易(二)level2行情数据源接入
  • LeetCode题:88合并两个有序数组,283移动零,448找到所有数组中消失的数字
  • idea 没加载 provided的包
  • GoLong的学习之路(十二)语法之标准库 flag的使用