当前位置: 首页 > article >正文

Hive的基础函数-日期函数

当前系统时间函数:current_date()、current_timestamp()、unix_timestamp()

-- 函数1:current_date();		
	当前系统日期		格式:"yyyy-MM-dd"
-- 函数2:current_timestamp();	
	当前系统时间戳:	格式:"yyyy-MM-dd HH:mm:ss.ms"
-- 函数3:unix_timestamp();	
	当前系统时间戳	格式:距离1970年1月1日0点的秒数。
	select unix_timestamp(); //获取当前的时间戳
  select unix_timestamp('2017/1/21','yyyy/MM/dd') ;


hive (yhdb)> select current_date();
OK
_c0
2023-08-26
Time taken: 1.032 seconds, Fetched: 1 row(s)
hive (yhdb)> select current_timestamp();
OK
_c0
2023-08-26 18:38:02.304
Time taken: 0.404 seconds, Fetched: 1 row(s)

日期转时间戳函数:unix_timestamp()

获取当前时间的时间戳
select unix_timestamp();
select unix_timestamp(current_timestamp());

hive (yhdb)> select unix_timestamp();
unix_timestamp(void) is deprecated. Use current_timestamp instead.
unix_timestamp(void) is deprecated. Use current_timestamp instead.
OK
_c0
1693046302
Time taken: 0.448 seconds, Fetched: 1 row(s)
hive (yhdb)> select unix_timestamp('2022-10-01 00:00:00');
OK
_c0
1664582400
Time taken: 0.322 seconds, Fetched: 1 row(s)

hive (yhdb)> select unix_timestamp('2022/10/01');
OK
_c0
NULL
Time taken: 0.473 seconds, Fetched: 1 row(s)
hive (yhdb)> select unix_timestamp('2022/10/01','yyyy/MM/dd');
OK
_c0
1664582400
Time taken: 0.336 seconds, Fetched: 1 row(s)

时间戳转日期函数:from_unixtime

根据时间戳,指定输出日期的格式:
hive (yhdb)> select from_unixtime(1693046606);
OK
_c0
2023-08-26 10:43:26
Time taken: 0.39 seconds, Fetched: 1 row(s)
hive (yhdb)> select from_unixtime(1693046606,'yyyy/MM/dd HH~mm~ss');
OK
_c0
2023/08/26 10~43~26
Time taken: 1.367 seconds, Fetched: 1 row(s)

总而言之

select from_unixtime(1724722412+8*3600);

from_unixtime 换算的时间出来之后,和真实的时间相差 8 小时。所以要+8 小时的秒值

计算时间差函数:datediff()、months_between()

select datediff('2023-01-01','2023-02-01');

hive (yhdb)> select datediff('2023-01-01','2023-02-01');
OK
_c0
-31
出现负数,说明数据是前面的时间减去后面的时间,相差的天数。

hive (yhdb)> select months_between('2019-12-20','2019-11-01');
OK
_c0
1.61290323
Time taken: 0.3 seconds, Fetched: 1 row(s)
前面的时间减去后面时间的月数 ,可以精确到小数。
日期相加:
select date_add('2023-12-31',3); -- 日期相加  2024-01-03
日期相减
select date_sub('2023-12-31',3);
select add_months('2023-12-31',3); --月份相加 2024-03-31

日期时间分量函数:year()、month()、day()、hour()、minute()、second()

select month(current_date());

hive (yhdb)> select month(current_date());
OK
_c0
8
Time taken: 0.395 seconds, Fetched: 1 row(s)
hive (yhdb)> select year(current_date());
OK
_c0
2023
Time taken: 0.374 seconds, Fetched: 1 row(s)
hive (yhdb)> select year('2012-12-12');
OK
_c0
2012
Time taken: 0.395 seconds, Fetched: 1 row(s)

日期定位函数:last_day()、next_day()

--月末:
select  last_day(current_date());
--可以求出当前日期的下个星期几
select next_day(current_date(),'thursday');

日期加减函数:date_add()、date_sub()、add_months()

select date_add(current_date,1);
select date_sub(current_date,90);
select add_months(current_date,1);

综合练习:

--当月第1天
当前月往前推一个月,7月,7月的最后一天,+1
select  date_add(last_day(add_months(current_date,-1)),1);

--下个月第1天:
select date_add(last_day(current_date),1);

dayofmonth(日期): 当前时间是这个月的第几天
select  add_months(date_sub(current_date,dayofmonth(current_date)-1),1);

字符串转日期:to_date()

select to_date('2023-07-01');

将日期转为字符串:date_format()

select date_format(current_timestamp(),'yyyy-MM-dd HH:mm:ss');
select date_format(current_timestamp(),'yyyy/MM/dd');
select date_format('2017-01-01','yyyy-MM-dd HH:mm:ss');

需求:假如需要将'2024-12-31' --> '2024/12/31'
-- 第一种方案
select date_format('2024-12-31','yyyy~MM~dd');
-- from_unixtime  将一个时间戳转换为某种字符串类型
-- 方案二
select from_unixtime(unix_timestamp('2024-12-31','yyyy-MM-dd'),'yyyy/MM/dd');


http://www.kler.cn/a/410639.html

相关文章:

  • ES 和Kibana-v2 带用户登录验证
  • 洛谷 B3635 硬币问题 C语言 记忆化搜索
  • STM32F103外部中断配置
  • 利用开源图床的技巧与实践
  • 【网络通信】数据集合集!
  • react项目初始化配置步骤
  • 【从经典到最新】28种信号分解方法,EMD类,VMD类,小波类,FMD、多元分解等(附matlab代码)
  • HDMI转VGA方案 LT8612UX(HDMI2.0) LT8612SX LT8511EX LT8522EX LT8612EX_e(HDMI1.4)
  • 企业数字化转型现状
  • 学习日志016--python实现双向循环列表与链栈
  • 软件测试丨Python语法与数据结构
  • C++【面试重要题目】 只出现一次的数字的集合.
  • git推送报错443
  • 从零开始:NetBox 4.1 Docker 部署和升级
  • 嵌入式的C/C++:深入理解 static、const 与 volatile 的用法与特点
  • 4.3 使用 JMeter 发起请求详解
  • 【人工智能】基于PyTorch的深度强化学习入门:从DQN到PPO的实现与解析
  • python VS c++
  • 室内定位论文速递(11.18-11.22)
  • Visual Studio下载安装教程(非常详细)从零基础入门到精通,看完这一篇就够了_visual studio安装教程
  • 鸿蒙征文|鸿蒙心路旅程:从零到一的探索与成长——我的HarmonyOS
  • 如何定制谷歌浏览器的外观主题
  • 基于IPMI的服务器硬件监控指标解读
  • CSS笔记(一)炉石传说卡牌设计1
  • 周志华深度森林deep forest(deep-forest)最新可安装教程,仅需在pycharm中完成,超简单安装教程
  • android 音效可视化--Visualizer