时间函数的变形

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时间函数的使用相关推荐

  1. hive时间函数入门

    1)当前系统时间函数:current_date().current_timestamp().unix_timestamp() -- 函数1:current_date(); 当前系统日期 格式:&quo ...

  2. hive 时间函数_Hive常用大法(聚合/排序/分组)

    Hello大家好,今天我们继续上篇文章,为大家分享一些Hive在工作中常用的聚合函数,分组函数,排序等等---- 我们就直接从聚合函数开始,什么是聚合函数呢,其实就是一句话,将多行合并为一行,就这么简 ...

  3. Hive时间日期函数一文详解+代码实例

    目录 前言 一.HiveSQL运行过程 二.Hive时间函数 1.获取当前时间 1.current_date() 2. current_timestamp() 3. unix_timestamp() ...

  4. presto 时间函数

    时间函数 0.当前日期/当前时间 presto:adm> select current_date,current_time,current_timestamp[=now()]-> ;_co ...

  5. mediarecorder添加时间戳_Python脚本实现数据处理(官方实例)和Hive自带时间函数...

    官网示例 官网地址: https://cwiki.apache.org/confluence/display/Hive/GettingStarted#GettingStarted-ApacheWebl ...

  6. HIVE获取时间函数, regexp_extract正则提取用法

    Hive获取时间函数 regexp_replace(date_add(from_unixtime(unix_timestamp(), "yyyy-MM-dd") , -1), '- ...

  7. hive 时间转字符串_hive日期函数

    hive的函数有很多,今天我带大家来总结下hive中常用的日期函数吧!!! 如有不足,还请大家多多指出,希望能和大家一起交流,共同进步! 时间一点一滴在溜走,我们要珍惜每一刻 1.日期时间转日期函数: ...

  8. Hive SQL时间函数及用法

    Hive SQL时间函数 当前官方提供的日期函数共27个,内容如下: 1. 获取当前系统时间 函数: current_timestamp 返回值:timestamp 返回查询计算开始时的当前时间戳(从 ...

  9. Hive常用函数大全一览

    Hive常用函数大全一览 1 关系运算 1.1 1.等值比较: = 1.2 2.不等值比较: 1.3 3.小于比较: < 1.4 4.小于等于比较: <= 1.5 5.大于比较: > ...

最新文章

  1. Python源码怎么读,听听顶级爬虫工程师的建议
  2. mysql php 增删数据,php学习之mysql数据的增删改查
  3. 如何修改influxdb表结构_使用nginx-lua修改influxdb API的返回结构
  4. linux shell带索引下标遍历数组
  5. matlab 实现 stacked Autoencoder 解决图像分类问题
  6. Eclipse的Mockito模板
  7. java boolean转int,java如何将int转换为boolean
  8. 视觉SLAM笔记(45) 搭建 VO 框架
  9. php 日期时间操作-可算出几天后的时间
  10. Facebook研究院院长:AI不会取代人类
  11. [py]py常用模块小结
  12. 【转】使用AIDL实现进程间的通信之复杂类型传递
  13. Atitit 查找算法 艾提拉大总结 目录 1. 查找算法分类 1 1.1. 简单查找算法之折半查找、插值查找、斐波那契查找 1 1.2. 按照数据结构查找法分类 hash 表 1 2. 第8章查找
  14. java如何对一个表达式开根号_Java中,如何对大数开根号啊!
  15. Phpstudy简介与使用教程
  16. 微信多开源码 android,微信(WeChat)电脑端多开分析+源码
  17. hp服务器bios检测硬盘接口,惠普bios硬盘设置图解
  18. 玩客云宝塔面板安装到外接硬盘
  19. 如何卸载“卸载驱动”图标为灰色图标
  20. 极域电子教室学生机房管理助手(好好上课)教程

热门文章

  1. Iptables与Firewalld防火墙
  2. zigbee信号测试软件,zigbee 信号测试.pdf
  3. 饲养员在给动物喂食时,给不同的动物喂不同的食物,而且在每次喂食时,动物都会发出欢快的叫声。例如,给小狗喂骨头,小狗会汪汪叫;给小猫喂食,小猫会喵喵叫。
  4. 搭建全国离线地图数据服务器解决方案
  5. 计算机应用基础含实践2,江苏00018计算机应用基础(含实践)不要免考手续吗
  6. 虚拟机登录时输入密码正确,进入界面后黑屏闪退回登陆界面,死循环问题,已解决
  7. pytoch人工神经网络基础:最简单的分类(softmax回归+交叉熵分类)
  8. 微信HOOK 从撤回消息深度剖析微信的一些设计理念
  9. 远程控制软件的使用方法
  10. 服务器抵御ddos攻击的方法