hive—常用的日期函数
目录
2、now() 或 current_timestamp() 当前时间
3、datediff(endDate, startDate) 计算日期相差天数
4、months_between(endDate, startDate) 日期相差月数
5、date_add(startDate, numDays) 日期加N天
6、date_sub(startDate, numDays) 日期减N天
7、add_months(startDate, numMonths) 日期加N月
9、 next_day(startDate, dayOfWeek) 指定日期后的第一个星期几(星期参数为英文缩写)
10、from_unixtime:转化unix时间戳到当前时区的时间格式
13、year、month、day、hour、minute、second:返回时间的年、月、日、时、分、秒
1、current_date 当前日期
select current_date();
--2024-12-11
2、now() 或 current_timestamp() 当前时间
select now();
select current_timestamp();
--2024-12-11 17:02:02:616
3、datediff(endDate, startDate) 计算日期相差天数
--其实就是用前一个日期减去后一个日期,想要得到正数的日期相差格式则需要把大的日期放在前边
select datediff('2022-02-22','2022-02-20');
--2
select datediff('2022-01-22','2022-02-20');
-- -29
4、months_between(endDate, startDate) 日期相差月数
select months_between('2022-06-16','2022-02-12');
--4.12903226
5、date_add(startDate, numDays) 日期加N天
select date_add('2022-02-22',3)
--2022-02-25
select date_add('2022-02-22',-3)
--2022-02-19
6、date_sub(startDate, numDays) 日期减N天
select date_sub('2022-02-22',3)
--2022-02-19
select date_sub('2022-02-22',-3)
--2022-02-25
7、add_months(startDate, numMonths) 日期加N月
select add_months('2022-02-22',3);
--2022-05-22
select add_months('2022-02-22',-3);
--2021-11-22
但是在hivesql和spark sql 里 add_months(startDate, numMonths) 当startDate为月份最后一天的30号时,取不到相加或相减后月份的最后一天,例如
select add_months('2022-09-30',1);
--2022-10-30 --非往后一个月的最后一天
改成:加多一步判断是否是最后一天
select (case when month('${yyyy-MM-dd}') <> month(date_add('${yyyy-MM-dd}', 1)) then last_day(add_months('${yyyy-MM-dd}',-6)) else add_months('${yyyy-MM-dd}',-6) end) DD
8、last_day(date) 日期所在月份的最后一天
select last_day('2022-02-22');
--2022-02-28
9、 next_day(startDate, dayOfWeek) 指定日期后的第一个星期几(星期参数为英文缩写)
select next_day('2022-02-22','MON')
--2022-02-28
10、from_unixtime:转化unix时间戳到当前时区的时间格式
select from_unixtime(1641044052,'yyyyMMdd');
--输出:20220101
11、unix_timestamp:转换到UNIX时间戳
--当前时间
select unix_timestamp();
--输出:1665803372
--yyyy-MM-dd HH:mm:ss日期
select unix_timestamp('2022-01-01 13:34:12');
--输出:1641044052
12、to_date:返回时间中的年月日
select to_date('2022-01-01 13:34:12');
--输出:2022-01-01
13、year、month、day、hour、minute、second:返回时间的年、月、日、时、分、秒
--年
select year('2021-12-31 11:32:12');
select year('2021-12-31');
--输出:2021
--月
select month('2021-12-31 11:32:12');
select month('2021-12-31');
--输出:12
--日
select day('2021-12-31 11:32:12');
select day('2021-12-31');
--输出:31
--时
select hour('2021-12-31 11:32:12');
--输出:11
--分
select minute('2021-12-31 11:32:12');
--输出:32
--秒
select second('2021-12-31 11:32:12');
--输出:12
原文地址:https://blog.csdn.net/qq_42020750/article/details/144405242
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!