轻松入门大数据
文章目录
- 轻松入门大数据
- 第10章 入门到进阶:如何快速掌握Hive核心函数
- 10.1 Hive函数
- 10.1.5 动手实操日期时间函数的使用
第10章 入门到进阶:如何快速掌握Hive核心函数
10.1 Hive函数
- 复杂数据类型
- Hive内置函数
- Hive UDF函数
- 窗口分析函数
- SQL场景题
10.1.5 动手实操日期时间函数的使用
看到官网文档:https://cwiki.apache.org/confluence/display/Hive/#Home-UserDocumentation
进
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
所有 Hive 关键字都不区分大小写,包括 Hive 运算符和函数的名称。
这整个文档就非常详细了。
我们先看日期类型:
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-DateFunctions
演示:
查询当前天:
select current_date;
查询当前时间戳:
select current_timestamp;
另一种:
select unix_timestamp();
这就是从那个神秘的时间,1970年1月1日0时0分0秒 ,到现在的秒数。
这个函数也可以指定时间进行转换:
select unix_timestamp('2008-08-08 20:08:00');
还可以指定格式:
select unix_timestamp('20080808 20:08:00','yyyyMMdd HH:mm:ss');
把时间戳转换成时间:
select from_unixtime(1218226080);
也可以指定输出格式:
select from_unixtime(1218226080,'yyyy-MM-dd');
没问题。
字符串转date:
select to_date('2008-08-08 20:08:00');
date 是只有年月日那种
根据字符串获取年月日时分秒:
select year('2008-08-08 20:08:00');
select month('2008-08-08 20:08:00');
select day('2008-08-08 20:08:00');
select hour('2008-08-08 20:08:00'),minute('2008-08-08 20:08:00'),second('2008-08-08 20:08:00');
没问题。
求时间是当年的第几周:
其实官网文档上都有
select weekofyear('2023-05-12 16:48:12');
哇,原来今天已经第19 周了
某天是当月的第几天:
select dayofmonth('2023-05-12 16:48:12');
两个日期之间隔了多少个月:
select months_between('2020-04-01','2020-05-10');
对一个日期加减n 个月:
select add_months('2020-04-01',-3);
当然加上正数就往后走了
求两个日期相差多少天:
select datediff('2020-04-01','2020-04-11');
对天进行加减:
select date_add('2020-04-01',-3);
减是date_sub,减月是month_sub
求单月 的最后一天:
select last_day('2020-02-01');
日期格式化转换:
select date_format('2020-10-11 12:13:14','yyyy/MM/dd HH:mm:ss');
没问题。