sql Spark 时间处理函数

year() month() day() hour():

日期转化:要处理的数据格式为'yyyy-mm-dd hh:mm:ss'

计算数据'2023-01-01 12:01:00'

year():取数据的年 year('2023-01-01 12:01:00') ----2023

month():取数据的月份 month('2023-01-01 12:01:00') ----01

day():取数据的日 day('2023-01-01 12:01:00') ----01

hour():取数据的小时 hour('2023-01-01 12:01:00') ----12

date():

转化为年月日的形式:

 date('2023-01-01 12:01:00')----2023-01-01

或者使用字符串截断的形式:

substr('2023-01-01 12:01:00',1,10)   -----2023-01-01  代表截取第一个字符到第10个字符的内容

时间加一秒:

from_unixtime(unix_timestamp('2023-01-01 12:01:00')+1,'yyyy-MM-dd HH:mm:ss')-----2023-01-01 12:01:01

日期格式转化:

from_unixtime(unix_timestamp('20230101','yyyymmdd'),'yyyy-mm-dd')  -----2023-01-01

当天日期:

current_date()

前一天日期:

date_add(current_date(),-1)---加上负一天

current_sub(surrent_date(),1)---减去一天

月末最后一天日期:

last_day(current_date())--月末最后一天

两日期之差:

datediff(now(),befor)--返回两天的天数

date_diff('day',now(),befor)--presto

秒数之差:

(unix_timestamp(call_start_time)-unix_timestamp( les_stu_started_at))

本周周一日期:

date_add(current_date(),cast(1-date_format(current_date(),'u') as int)) 

本周周日日期:

date_add(current_date(),cast(7-date_format(current_date(),'u') as int))--日期型

转化为当年第几周:

weekofyear(current_date())--当天是当年的第几周

月份加减:

add_months(current_date(), -1)---上一个月的当天日期 返回'yyyy-mm-dd'

add_months(substr(current_date(),1,7), -1)---上一个月 返回'yyyy-mm-01'

date_format(month-interval'1'month,'yyyy-MM')--上一个月 返回'yyyy-mm'

月份之差:

months_between(date_now,date_befor)--输入日期格式为'yyyy-mm' 返回相差几个月

你可能感兴趣的:(sql,hive,spark,数据仓库)