hive时间函数的使用
时间函数的变形
selectday -- 时间,date_add(day,1 - dayofweek(day)) as week_first_day -- 本周第一天_周日,date_add(day,7 - dayofweek(day)) as week_last_day -- 本周最后一天_周六,date_add(day,1 - case when dayofweek(day) = 1 then 7 else dayofweek(day) - 1 end) as week_first_day -- 本周第一天_周一,date_add(next_day(day,'MO'),-7) as week_first_day -- 本周第一天_周一;,date_add(day,7 - case when dayofweek(day) = 1 then 7 else dayofweek(day) - 1 end) as week_last_day -- 本周最后一天_周日,next_day(day,'TU') as next_tuesday -- 当前日期的下个周二,trunc(day,'MM') as month_first_day -- 当月第一天,date_sub(current_date,dayofmonth(current_date)-1) as month_first_day1 -- 当月第一天,add_months(date_sub(current_date,dayofmonth(current_date)-1),1) as next_month_first_day -- 下月第一天,last_day(day) as month_last_day -- 当月最后一天,to_date(concat(year(day),'-',lpad(ceil(month(day)/3) * 3 -2,2,0),'-01')) as season_first_day -- 当季第一天,last_day(to_date(concat(year(day),'-',lpad(ceil(month(day)/3) * 3,2,0),'-01'))) as season_last_day -- 当季最后一天,trunc(day,'YY') as year_first_day -- 当年第一天,last_day(add_months(trunc(day,'YY'),12)) as year_last_day -- 当年最后一天,weekofyear(day) as weekofyear -- 当年第几周,second(day) as second -- 秒钟,minute(day) as minute -- 分钟,hour(day) as hour -- 小时,day(day) as day -- 日期,month(day) as month -- 月份,lpad(ceil(month(day)/3),2,0) as season -- 季度,year(day) as year -- 年份
from (select '2021-01-12 01:01:01' as day union allselect '2021-02-12 02:03:04' as day union allselect '2021-03-12 03:05:07' as day union allselect '2021-04-12 04:07:10' as day union allselect '2021-05-12 05:09:13' as day union allselect '2021-06-12 06:11:16' as day union allselect '2021-07-12 07:13:19' as day union allselect '2021-08-12 08:15:22' as day union allselect '2021-09-12 09:17:25' as day union allselect '2021-10-12 10:19:28' as day union allselect '2021-11-12 11:21:31' as day union allselect '2021-12-12 12:23:34' as day
) t1
;
1、获取当前时间戳
select unix_timestamp() ;
2.1、获取当前时间1(时分秒)
select current_timestamp()
2.2、获取当前时间2
SELECT from_unixtime(unix_timestamp());
3、获取当前时间(年月日)
select current_date()
4、日期差值:datediff(结束日期,开始日期),返回结束日期减去开始日期的天数。
select datediff(CURRENT_DATE,'2021-01-01') as datediff;
5、日期加减:date_add(时间,增加天数),返回值为时间天+增加天的日期;date_sub(时间,减少天数),返回日期减少天后的日期。
select date_add(current_date,365) as dateadd;
6、时间差:两个日期之间的小时差
select (hour('2021-12-27 10:00:00')-hour('2021-12-25 12:00:00')+(datediff('2021-12-27 10:00:00','2021-12-25 12:00:00'))*24) as hour_subValue;
或者先将年月日时分秒的格式转为 时间戳格式后再进行加减
分钟数:(UNIX_TIMESTAMP(service_end_time) - UNIX_TIMESTAMP(service_start_time))/60)
小时数: ((UNIX_TIMESTAMP(service_end_time) - UNIX_TIMESTAMP(service_start_time))/60) ) /60
9、获取年、月、日、小时、分钟、秒、当年第几周
selectyear('2021-12-01 10:00:00') as year,month('2021-12-01 10:00:00') as month,day('2021-12-01 10:00:00') as day,hour('2021-12-01 10:00:00') as hour,minute('2021-12-01 10:00:00') as minute,second('2021-12-01 10:00:00') as second,weekofyear('2021-12-01 10:00:00') as weekofyear
10、转成日期
select to_date('2021-12-01 10:00:00') ;
11、当月最后一天
select last_day('2021-12-01 10:03:01');
下月最后一天
–先获取最后一天,然后日期+1,则为下一月第一天
select date_add(last_day(‘2021-12-01’),1);
在这里插入代码片
12、当月第一天
select trunc(current_date,'MM') as day;或者:--先获取当前日期在该月份的第n天,然后当前日期减去第(n-1)天,则为结果
select date_sub('2020-05-14',dayofmonth('2020-05-14')-1)
13、当年第一天
select trunc(current_date,'YY') as day;
14、next_day,返回当前时间的下一个星期几所对应的日期, 星期一到星期日的英文(Monday,Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday),这里是:2021-12-01 日之后的星期五
select next_day('2021-12-01 10:03:01', 'Fri'); -- 2021-12-03
15、hive中怎么获取两个日期相减后的小时(精确到两位小数点),而且这两个日期有可能会出现一个日期有时分秒,一个日期没有时分秒的情况
-- hive中怎么获取两个日期相减后的小时(精确到两位小数点),而且这两个日期有可能会出现一个日期有时分秒,一个日期没有时分秒的情况
selectt3.day1,t3.day2,t3.day -- 日期,t3.hour -- 小时,t3.min -- 分钟,t3.day + t3.hour as hour_diff_1,t3.day + t3.hour + t3.min as hour_diff_2,round((cast(cast(t3.day1 as timestamp) as bigint) - cast(cast(t3.day2 as timestamp) as bigint)) / 3600,2) as hour_diff_3 -- 最优,(datediff(t3.day1,t3.day2) * 24) + (nvl(hour(t3.day1),0) - nvl(hour(t3.day2),0)) + round((nvl(minute(t3.day1),0) - nvl(minute(t3.day2),0)) / 60,2) as hour_diff_4
from (selectt2.day1,t2.day2,(datediff(t2.day1,t2.day2) * 24) as day -- 日期,(hour(t2.day1) - hour(t2.day2)) as hour -- 小时,round((minute(t2.day1) - minute(t2.day2)) / 60,2) as min -- 分钟from (selectcast(t1.day1 as timestamp) as day1,cast(t1.day2 as timestamp) as day2from (select '2018-01-03 02:30:00' as day1, '2018-01-02 23:00:00' as day2 union allselect '2018-06-02 08:15:22' as day1, '2018-06-02 06:11:16' as day2 union allselect '2018-07-04' as day1, '2018-07-02 01:01:01' as day2) t1) t2
) t3
;
+------------------------+------------------------+------+-------+--------+--------------+--------------+--------------+--------------+--+
| day1 | day2 | day | hour | min | hour_diff_1 | hour_diff_2 | hour_diff_3 | hour_diff_4 |
+------------------------+------------------------+------+-------+--------+--------------+--------------+--------------+--------------+--+
| 2018-07-04 00:00:00.0 | 2018-07-02 01:01:01.0 | 48 | -1 | -0.02 | 47 | 46.98 | 46.98 | 46.98 |
| 2018-01-03 02:30:00.0 | 2018-01-02 23:00:00.0 | 24 | -21 | 0.5 | 3 | 3.5 | 3.5 | 3.5 |
| 2018-06-02 08:15:22.0 | 2018-06-02 06:11:16.0 | 0 | 2 | 0.07 | 2 | 2.07 | 2.07 | 2.07 |
+------------------------+------------------------+------+-------+--------+--------------+--------------+--------------+--------------+--+
16、给出一个日期计算该日期为周几
--先找一个周一的日期,比如我们找的2022-09-06,然后和当前日期(2022-09-14)做比较,
--就会得出相差的天数,再用pmod获取正余数的函数来获取最后的余数(0-6分别代表周日~周六),
--本实例做+1操作,直接得出周几的结果;select pmod(datediff('2022-09-14','2022-09-06') + 1,7);
hive时间函数的使用相关推荐
- hive时间函数入门
1)当前系统时间函数:current_date().current_timestamp().unix_timestamp() -- 函数1:current_date(); 当前系统日期 格式:&quo ...
- hive 时间函数_Hive常用大法(聚合/排序/分组)
Hello大家好,今天我们继续上篇文章,为大家分享一些Hive在工作中常用的聚合函数,分组函数,排序等等---- 我们就直接从聚合函数开始,什么是聚合函数呢,其实就是一句话,将多行合并为一行,就这么简 ...
- Hive时间日期函数一文详解+代码实例
目录 前言 一.HiveSQL运行过程 二.Hive时间函数 1.获取当前时间 1.current_date() 2. current_timestamp() 3. unix_timestamp() ...
- presto 时间函数
时间函数 0.当前日期/当前时间 presto:adm> select current_date,current_time,current_timestamp[=now()]-> ;_co ...
- mediarecorder添加时间戳_Python脚本实现数据处理(官方实例)和Hive自带时间函数...
官网示例 官网地址: https://cwiki.apache.org/confluence/display/Hive/GettingStarted#GettingStarted-ApacheWebl ...
- HIVE获取时间函数, regexp_extract正则提取用法
Hive获取时间函数 regexp_replace(date_add(from_unixtime(unix_timestamp(), "yyyy-MM-dd") , -1), '- ...
- hive 时间转字符串_hive日期函数
hive的函数有很多,今天我带大家来总结下hive中常用的日期函数吧!!! 如有不足,还请大家多多指出,希望能和大家一起交流,共同进步! 时间一点一滴在溜走,我们要珍惜每一刻 1.日期时间转日期函数: ...
- Hive SQL时间函数及用法
Hive SQL时间函数 当前官方提供的日期函数共27个,内容如下: 1. 获取当前系统时间 函数: current_timestamp 返回值:timestamp 返回查询计算开始时的当前时间戳(从 ...
- Hive常用函数大全一览
Hive常用函数大全一览 1 关系运算 1.1 1.等值比较: = 1.2 2.不等值比较: 1.3 3.小于比较: < 1.4 4.小于等于比较: <= 1.5 5.大于比较: > ...
最新文章
- Python源码怎么读,听听顶级爬虫工程师的建议
- mysql php 增删数据,php学习之mysql数据的增删改查
- 如何修改influxdb表结构_使用nginx-lua修改influxdb API的返回结构
- linux shell带索引下标遍历数组
- matlab 实现 stacked Autoencoder 解决图像分类问题
- Eclipse的Mockito模板
- java boolean转int,java如何将int转换为boolean
- 视觉SLAM笔记(45) 搭建 VO 框架
- php 日期时间操作-可算出几天后的时间
- Facebook研究院院长:AI不会取代人类
- [py]py常用模块小结
- 【转】使用AIDL实现进程间的通信之复杂类型传递
- Atitit 查找算法 艾提拉大总结 目录 1. 查找算法分类	1 1.1. 简单查找算法之折半查找、插值查找、斐波那契查找	1 1.2. 按照数据结构查找法分类 hash 表	1 2. 第8章查找
- java如何对一个表达式开根号_Java中,如何对大数开根号啊!
- Phpstudy简介与使用教程
- 微信多开源码 android,微信(WeChat)电脑端多开分析+源码
- hp服务器bios检测硬盘接口,惠普bios硬盘设置图解
- 玩客云宝塔面板安装到外接硬盘
- 如何卸载“卸载驱动”图标为灰色图标
- 极域电子教室学生机房管理助手(好好上课)教程
热门文章
- Iptables与Firewalld防火墙
- zigbee信号测试软件,zigbee 信号测试.pdf
- 饲养员在给动物喂食时,给不同的动物喂不同的食物,而且在每次喂食时,动物都会发出欢快的叫声。例如,给小狗喂骨头,小狗会汪汪叫;给小猫喂食,小猫会喵喵叫。
- 搭建全国离线地图数据服务器解决方案
- 计算机应用基础含实践2,江苏00018计算机应用基础(含实践)不要免考手续吗
- 虚拟机登录时输入密码正确,进入界面后黑屏闪退回登陆界面,死循环问题,已解决
- pytoch人工神经网络基础:最简单的分类(softmax回归+交叉熵分类)
- 微信HOOK 从撤回消息深度剖析微信的一些设计理念
- 远程控制软件的使用方法
- 服务器抵御ddos攻击的方法