Hive:日期函数

1、to_date:日期时间转日期函数

sql 复制代码
select to_date('2015-04-02 13:34:12');
 2015-04-02

2、from_unixtime:转化unix时间戳到当前时区的时间格式

语法: from_unixtime(bigint unixtime[, stringformat])

返回值: string

说明: 转化UNIX时间戳(从1970-01-0100:00:00 UTC到指定时间的秒数)到当前时区的时间格式。

举例:

sql 复制代码
 select from_unixtime(1635674463);
+----------------------+--+
|         _c0          |
+----------------------+--+
| 2021-10-31 10:01:03  |
+----------------------+--+
sql 复制代码
hive> select from_unixtime(1635650101,'yyyyMMdd');
20211031

3、unix_timestamp:获取当前unix时间戳

语法: unix_timestamp(string date)

返回值: bigint

说明: 转换格式为 yyyy-MM-dd HH:mm:ss 的日期到UNIX时间戳。如果转化失败,则返回 NULL。

sql 复制代码
select unix_timestamp(),
       unix_timestamp('2015-04-30 13:51:20'),
       from_unixtime(1713081611),
       from_unixtime(1713081611,'yyyyMMdd HH:mm:ss')
输出:1713082006
	1430373080	
	2024-04-14 16:00:11	
	20240414 16:00:11

4、year:返回日期中的年

sql 复制代码
select year('2015-04-02 11:32:12');
输出:2015

5、month:返回日期中的月份

sql 复制代码
select month('2015-12-02 11:32:12');
输出:12

6、day:返回日期中的天

sql 复制代码
select day('2015-04-13 11:32:12');
输出:13

7、hour:返回日期中的小时

sql 复制代码
select hour('2015-04-13 11:32:12');
输出:11

8、minute:返回日期中的分钟

sql 复制代码
select minute('2015-04-13 11:32:12');
输出:32

9、second:返回日期中的秒

sql 复制代码
select second('2015-04-13 11:32:56');
输出:56

10、weekofyear:返回日期在当前周数

sql 复制代码
select weekofyear('2015-05-05 12:11:1');
输出:19

11、datediff:返回开始日期减去结束日期的天数

sql 复制代码
select datediff('2015-04-09','2015-04-01');
输出:8

12、date_sub:返回日期前n天的日期

sql 复制代码
select date_sub('2015-04-09',4);
输出:2015-04-05

13、date_add:返回日期后n天的日期

sql 复制代码
select date_add('2015-04-09',4);
输出:2015-04-13

14、from_unixtime+ unix_timestamp Hive中yyyymmdd和yyyy-mm-dd日期之间的切换

sql 复制代码
思想:先转换成时间戳,再由时间戳转换为对应格式。
--20171205转成2017-12-05 

select from_unixtime(unix_timestamp('20171205','yyyymmdd'),'yyyy-mm-dd') from dual;

--2017-12-05转成20171205

select from_unixtime(unix_timestamp('2017-12-05','yyyy-mm-dd'),'yyyymmdd') from dual;

15、Hive中取最近30天数据

sql 复制代码
datediff(CURRENT_TIMESTAMP ,gmt_create)<=30 

16、Hive中 两个日期相差多少小时

sql 复制代码
select (unix_timestamp('2018-05-25 12:03:55') - unix_timestamp('2018-05-25 11:03:55'))/3600
输出:1

17、Hive中 两个日期相差多少分钟

sql 复制代码
select (unix_timestamp('2018-05-25 12:03:55') - unix_timestamp('2018-05-25 11:03:55'))/60

输出:60

18、hive 计算某一个日期属于星期几,如2018-05-20 是星期日

sql 复制代码
SELECT IF(pmod(datediff('2018-05-20', '1920-01-01') - 3, 7)='0', 7, pmod(datediff('2018-05-20', '1920-01-01') - 3, 7)) 
输出:7

19、hive返回上个月第一天和最后一天

sql 复制代码
--上个月第一天
select trunc(add_months(CURRENT_TIMESTAMP,-1),'MM')


select concat(substr(add_months(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),-1),1,7),'-01'); 


--上个月最后一天
select date_sub(trunc(CURRENT_TIMESTAMP,'MM'),1);

20、TRUNC函数为指定元素而截去的日期值。

其具体的语法格式如下: TRUNC(date[,fmt]) 其中:date 一个日期值

fmt 日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去

sql 复制代码
--如果当日日期是:2011-3-18
1.select trunc(sysdate) from dual --2011-3-18 今天的日期为2011-3-18
2.select trunc(sysdate, 'mm') from dual --2011-3-1 返回当月第一天.
3.select trunc(sysdate,'yy') from dual --2011-1-1 返回当年第一天
4.select trunc(sysdate,'dd') from dual --2011-3-18 返回当前年月日
5.select trunc(sysdate,'yyyy') from dual --2011-1-1 返回当年第一天
6.select trunc(sysdate,'d') from dual --2011-3-13 (星期天)返回当前星期的第一天
7.select trunc(sysdate, 'hh') from dual --2011-3-18 14:00:00 当前时间为14:41
8.select trunc(sysdate, 'mi') from dual --2011-3-18 14:41:00 TRUNC()函数没有秒的精确
相关推荐
青云交3 小时前
大数据新视界 -- Hive 数据仓库:构建高效数据存储的基石(下)(2/ 30)
大数据·数据仓库·hive·数据安全·数据分区·数据桶·大数据存储
SelectDB技术团队4 小时前
兼顾高性能与低成本,浅析 Apache Doris 异步物化视图原理及典型场景
大数据·数据库·数据仓库·数据分析·doris
soso19686 小时前
DataWorks快速入门
大数据·数据仓库·信息可视化
B站计算机毕业设计超人6 小时前
计算机毕业设计SparkStreaming+Kafka旅游推荐系统 旅游景点客流量预测 旅游可视化 旅游大数据 Hive数据仓库 机器学习 深度学习
大数据·数据仓库·hadoop·python·kafka·课程设计·数据可视化
Yz987610 小时前
hive的存储格式
大数据·数据库·数据仓库·hive·hadoop·数据库开发
lzhlizihang10 小时前
python如何使用spark操作hive
hive·python·spark
武子康10 小时前
大数据-230 离线数仓 - ODS层的构建 Hive处理 UDF 与 SerDe 处理 与 当前总结
java·大数据·数据仓库·hive·hadoop·sql·hdfs
武子康10 小时前
大数据-231 离线数仓 - DWS 层、ADS 层的创建 Hive 执行脚本
java·大数据·数据仓库·hive·hadoop·mysql
锵锵锵锵~蒋10 小时前
实时数据开发 | 怎么通俗理解Flink容错机制,提到的checkpoint、barrier、Savepoint、sink都是什么
大数据·数据仓库·flink·实时数据开发