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

相关推荐
Thanks_ks5 小时前
MySQL 的索引是什么?用图书馆的目录讲明白
数据库·sql·mysql·索引·联合索引·explain·慢查询优化
freejackman20 小时前
【实战二】字段级血缘追踪:拆解 AST 迷局,精准穿透函数链与子查询
大数据·数据库·sql
骑着蜗牛撵大象3272 天前
MySQL 8.0 迁移后 SQL 变慢:执行计划里 3 类被忽略的成本差异
android·数据库·sql·mysql·优化器·执行计划
zhengfei6112 天前
Go-fastdfs /reload 未授权访问: 有效PoC
数据库·sql
大维2 天前
DBX 实测:从 SQLite 查询到 MiniMax-M3 自然语言生成 SQL
数据库·sql·sqlite
skywalk81632 天前
hive 常驻集群:像 OSPF 一样在线,像 git 一样可信
运维·人工智能·hive
景煜拾年2 天前
InnoAI SQL 助手
运维·数据库·笔记·sql
Decay__3 天前
22_MySQL 运维自动化平台 —— 部署编排 + 监控 + 巡检 + 告警 + 工单闭环一体化
运维·数据库·sql·mysql·架构
Decay__3 天前
21_MySQL 优化案例集 —— 慢 SQL 优化、索引重构与参数调整收益对比
运维·数据库·sql·mysql·架构
挖掘狂人3 天前
MySQL 深分页优化:limit 100000, 10 慢在哪,怎么救
后端·sql·mysql