HIVE SQL教程

日期处理函数

1.date_format:将日期进行格式化

语法:date_format(日期,格式)

作用:把一个字符串日期格式化为指定的格式

年月日,时分秒:'yyyy-MM-dd HH:mm:ss'

select date_format('2017-01-01','yyyy-MM-dd HH:mm:ss');  --日期字符串必须满足yyyy-MM-dd格式    

2.date_add、date_sub函数(加减日期)

作用:把一个字符串日期格式加一天、减一天。

select date_add('2019-01-01',1); --字符串必须满足yyyy-MM-dd格式

select date_sub('2019-01-01',1); --字符串必须满足yyyy-MM-dd格式 

select to_char(date_sub(from_unixtime(unix_timestamp(now(),'YYYY-MM-DD HH:mm:ss'),'yyyy-MM-dd'),30),'yyyymmdd')

3.next_day函数

作用:得到一个字符串日期的下周几的具体日期

星期日 Sunday Sun.

星期一 Monday Mon.

星期二 Tuesday Tues.

星期三 Wednesday Wed.

星期四 Thursday Thur./Thurs.

星期五 Friday Fri.

星期六 Saturday Sat.

select next_day('2020-01-01','Fri');    --得到2020-01-01往后的第一个周五

4.last_day函数(求当月最后一天日期)

作用:求当月的最后一天日期

select last_day('2020-01-01');

结果:select last_day('2020-01-01');

5.获取当月第一天

TRUNC函数为指定元素而截去的日期值。
其具体的语法格式如下:
TRUNC(date[,fmt])
其中:date 一个日期值
fmt 日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去

select trunc(date('2021-08-04'),'MM')

6.获取当前时间

current_date

或者

now()

current_date()

  作用:得到当前的日期字符串

select current_date();

  结果:2020-01-01

时间戳处理函数

1.unix_timestemp

语法:('日期字符串',‘pattern’)   

作用:把指定格式的日期转成时间戳,即转换成距离最早的时间之间的秒数

默认不填pattern的话,输入的日期字符串格式必须为:'yyyy-MM-dd HH:dd:ss',否则会返回空

例如:select unix_timestamp('2021-08-04 17:48:48')

如果不填任何参数就是当前系统时间戳

例如:select unix_timestamp()

结果为:

1628071166

日期格式必须和pattern指定格式一样,否则返回空

select unix_timestamp('2021-08-04 17:48:48','yyyy-MM-dd HH:mm:ss')

2.from_unixtime

语法:(‘bigint时间戳’,‘pattern’)函数

作用:把一个大数字时间戳,转换为指定格式的日期字符串

select from_unixtime(1517725479,'yyyy-MM-dd HH:dd:ss');

select from_unixtime(1517725479,'yyyyMMdd');

结果:2018-02-04 14:04:39

20180204

常把1和2一起用

select from_unixtime(unix_timestamp(now(),'yyyy-MM-dd HH:mm:ss'))

3.dateadd函数

减去指定周期时间,

hh:小时、mi:分钟、ss是秒

dd:日、MM:月

select dateadd(from_unixtime(unix_timestamp('2021-08-05 13:00:00','yyyy-MM-dd HH:mm:ss')),-60,'mi')

字符串处理函数

1.to_char

将日期类型的时间,转换成时间字符串,并按照指定格式输出

月是小mm:yyyymmdd

select to_char(dateadd(from_unixtime(unix_timestamp('2021-08-05 13:00:00','yyyy-MM-dd HH:mm:ss')),-60,'mi'),'yyyymmdd')

2.cast字符串转换为int

方法1:

cast(start_time AS BIGINT) 

方法2:

select unix_timestamp()-int(unix_timestamp(event_time))

原文地址:https://www.cnblogs.com/T-CYP/p/15100174.html