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

相关推荐
宁小法1 天前
SQL查询对比: select exists($sql) 跟 select * from `users` where `id` = 60000001的区别差异
数据库·sql·select exists
不剪发的Tony老师1 天前
sqlectron:一款轻量级的SQL客户端
数据库·sql
几度风雨见丹心1 天前
sqlite图形化界面建数据库、建表、增删改查、选择.db文件、将sql脚本一键导入,并同步数据、一键导出sql脚本并保存本地.sql文件
数据库·sql·sqlite
Hello.Reader1 天前
Flink Procedures 用 SQL 的 `CALL` 跑 Flink Job(实现、类型推断、命名参数、Catalog 集成一篇搞懂)
大数据·sql·flink
刘冲溟1 天前
解决 idea 编辑sql文件换行后自动缩进的问题
sql·idea·缩进
是阿威啊1 天前
企业级的RDD、 Spark SQL、DataFrame、Dataset使用场景介绍
大数据·sql·spark
本旺1 天前
【数据开发离谱场景记录】Hive + ES 复杂查询场景处理
hive·hadoop·elasticsearch
IvanCodes1 天前
openGauss 高级特性:优化器、存储引擎与分区管理
数据库·sql·opengauss
航Hang*1 天前
第3章:复习篇——第5-2节:数据库编程2
数据库·笔记·sql·mysql·sqlserver
islandzzzz1 天前
SQL学习应用工作场景(2)--执行优先级+语法顺序+保留2位小数
数据库·sql·学习