[Hive] Hive SQL基础语法总结(基于 Azure云):时间以及日期处理

基础汇总

select date_add(day,1 - dayofweek(day)) -- 本周第一天 -> 周日的日期
select date_add(day,7 - dayofweek(day)) -- 本周最后一天 -> 周六的日期
select date_add(day,1 - case when dayofweek(day) = 1 then 7 else dayofweek(day) - 1 end) -- 本周第一天 -> 周一的日期
select date_add(day,7 - case when dayofweek(day) = 1 then 7 else dayofweek(day) - 1 end) -- 本周第一天 -> 周一的日期
select next_day(day,'TU') -- 当前日期的下个周二的日期
select trunc(day,'MM') -- 当月第一天的日期
select last_day(day) -- 当月最后一天的日期
select to_date(concat(year(day),'-',lpad(ceil(month(day)/3) * 3 -2,2,0),'-01')) -- 当季第一天的日期
select last_day(to_date(concat(year(day),'-',lpad(ceil(month(day)/3) * 3,2,0),'-01'))) -- 当季最后一天的日期
select trunc(day,'YY') -- 当年第一天的日期
select last_day(add_months(trunc(day,'YY'),12)) -- 当年最后一天的日期
select weekofyear(day) -- 当年第几周
select second(day),minute(day),hour(day), day(day), month(day), lpad(ceil(month(day)/3),2,0),year(day) -- 返回秒,分钟,小时,天,月份,季度,年

-- 上面的所有day都是 DateTime 类型或者 Date 类型
-- 例如 :'2021-01-19 10:00:00','2021-01-19'

时间以及日期处理,实例展示

获取当前时间截(timestamp)

使用unix_timestamp() 函数

select unix_timestamp() 

展示结果为:
在这里插入图片描述

获取当前时间

使用current_timestamp()函数

select current_timestamp() 
-- 精确到秒之后

展示结果为:
在这里插入图片描述

基于当前时间截图unix_timestamp()函数

SELECT from_unixtime(unix_timestamp())
-- 精确到秒

展示结果为:
在这里插入图片描述

获取当前日期

使用 CURRENT_DATE 函数

SELECT CURRENT_DATE

展示结果为:
在这里插入图片描述

日期之间的时间间隔

以天为单位

使用函数datediff(date_1,date_2),其返回结果为 date_1 - date_2,单位为天

select datediff(CURRENT_DATE,'2021-01-17')

展示结果为:
在这里插入图片描述

可返回为负值

select datediff('2021-01-17',CURRENT_DATE)

展示结果为:
在这里插入图片描述

以小时为单位

使用hour()函数与datediff结合使用

select (hour('2021-01-19 10:00:00')-hour('2021-01-18 12:00:00')+(datediff('2021-01-19 10:00:00','2021-01-18 12:00:00'))*24)
-- 首先分别提取结束时间点的小时以及开始时间的小时
-- 1.结束时间点的小时 - 开始时间点的小时
-- 再计算结束时间点与开始时间点差了几天
-- 2.相差天数*24等于相差的小时数
-- 1.+ 2. 等于以小时为单位的时间间隔

展示结果为:
在这里插入图片描述

日期之间进行加减

日期加法

使用 date_add(date,day_add)函数,返回值为 date + day_add 的日期

select date_add(CURRENT_DATE,365)

展示结果为:
在这里插入图片描述

日期减法

使用 date_sub(date,day_sub)函数,返回值为 date - day_sub 的日期

select date_sub(CURRENT_DATE,365)

展示结果为:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AutismThyself

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值