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

获取当前的年月日 时分秒
sql 复制代码
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 这种格式

在指定时间上增加15分钟
sql 复制代码
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
时间字段按照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里面的写法为

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语句可以直接执行查看结果,用作测试

相关推荐
Ln5x9qZC23 小时前
Flink SQL 元数据持久化实战
大数据·sql·flink
升职佳兴5 小时前
SQL 进阶3:连续登录问题与 ROW_NUMBER 差值法完整解析
java·数据库·sql
014-code6 小时前
MySQL 很实用的 SQL 语句清单(排障与日常运维)
sql·mysql
bIo7lyA8v7 小时前
从 ChangeTracker 到 SQL Batch 的性能诊断与优化
数据库·sql·batch
蒸汽求职7 小时前
低延迟系统优化:针对金融 IT 与高频交易,如何从 CPU 缓存行(Cache Line)对齐展现硬核工程底蕴?
sql·算法·缓存·面试·职场和发展·金融·架构
麦聪聊数据20 小时前
企业数据流通与敏捷API交付实战(五):异构数据跨库联邦与零代码发布
数据库·sql·低代码·restful
生瓜硬劈..1 天前
SQL 调优全解:从 20 s 到 200 ms 的 6 步实战笔记
java·笔记·sql
颜颜yan_1 天前
让数据库学会说“不“——金仓 SQL 防火墙深度解析
数据库·sql
霖霖总总1 天前
[小技巧52]从 SQL 到结果:MySQL 8.0 查询执行全流程深度剖析
sql·mysql
輕華1 天前
【零基础入门】SQL 核心语法精讲:外键约束与多表查询全解析(进阶篇)
数据库·sql