简介
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-DateFunctions
复制
--查看所有方法
SHOW FUNCTIONS;
--查看方法声明
DESCRIBE FUNCTION <function_name>;
--查看方法的详细使用说明
DESCRIBE FUNCTION EXTENDED <function_name>;
复制
常用方法整理
from_unixtime
语法:from_unixtime(bigint unixtime[, string format])
返回值:string
说明:转化UNIX时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格
eg:select from_unixtime(cast(current_timestamp() as bigint),'yyyy-MM-dd');
2021-03-25
复制
unix_timestamp
一 语法:unix_timestamp(string date)
返回值:bigint
说明:传入一个yyyy-MM-dd HH:mm:ss类型的时间字符串,返回一个以系统时区
转换后的时间戳
eg:select unix_timestamp("2021-03-24 23:30:30");
1616599830
二 语法:unix_timestamp(string date, string pattern);
返回值:bigint
说明:传入一个字符串时间,和格式化类型,返回一个转换后的时间戳
eg:select unix_timestamp("2021-03-24 23:30:30","yyyy-MM-dd");
1616515200
复制
to_date
语法:to_date(string timestamp)
返回值:2.1之前返回字符串,2.1之后返回date类型
说明:select to_date("1970-01-01 00:00:00");
"1970-01-01"
复制
year
语法:year(string date)
返回值:int
说明:返回传入时间的年份
eg:select year("1970-01-01 00:00:00");
1970
select year("1970-01-01") ;
1970
复制
month
语法:month(string date)
返回值:int
说明:获取传入时间的月份部分
eg:select month("1970-11-01 00:00:00") ;
11
select month("1970-11-01") ;
11
复制
day
一 语法:day(string date)
返回值:int
说明:获取传入时间的日部分
eg:select day("1970-11-01 00:00:00") ;
1
select tday("1970-11-01") ;
1
二 语法:dayofmonth(date)
返回值:int
说明:获取传入时间的日部分
eg:select dayofmonth("2021-02-01");
1
select dayofmonth("2021-02-01 12:00:00");
1
复制
hour
语法:hour(string date)
返回值:int
说明:获取传入时间的小时部分
eg:select hour('2009-07-30 12:58:59') ;
12
select hour('12:58:59');
12
复制
datediff
语法:datediff(string enddate, string startdate);
返回值:int
说明:返回日期的差值
eg:select datediff('2009-03-01', '2009-02-27') ;
2
复制
date_add
语法:date_add(date/timestamp/string startdate, tinyint/smallint/int days)
返回值:int
说明:在基础日期上加上指定天数,天数可为负
eg:select date_add("2021-03-25",1);
2021-03-26
select date_add("2021-03-25",-1);
2021-03-24
复制
date_sub
语法:date_sub(date/timestamp/string startdate, tinyint/smallint/int days)
返回值:int
说明:日期减函数,天数值可为负
eg:select date_sub("2021-03-25",-1);
2021-03-26
select date_sub("2021-03-25",1);
2021-03-24
复制
date_format
语法:date_format(date/timestamp/string ts, string fmt)
返回值:string
说明:日期格式化函数
eg:select date_format(current_timestamp(),'yyyy-MM-dd');
2021-03-25
select date_format("2021-02-01 12:30:20",'yyyy/MM/dd hh:mm:ss');
2021/02/01 12:30:20
日期格式化类型官网介绍:
https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
复制
quarter
语法:quarter(date/timestamp/string)
返回值:int
说明:返回当前季度 1-4 之间的值
eg: select quarter('2015-04-08') ;
2
复制
extract
语法:extract(field FROM source)
返回值:int
说明:时间信息提取,可提取值day, dayofweek, hour, minute, month, quarter, second, week and year
eg: select extract(day from "2021-03-01");
1
select extract(dayofweek from "2021-03-01");
2
select extract(month from "2021-03-01");
3
复制
current_date
语法:current_date
返回值:date
说明:返回当前时间
eg: select current_date;
2021-03-24
复制
current_timestamp
语法:current_timestamp
返回值:timestamp
说明:返回当前时间戳类型
eg: select current_timestamp;
2021-03-24 10:48:22.103
复制
add_months
语法:add_months(string start_date, int num_months, output_date_format)
返回值:string
说明:月份加减函数
eg: select add_months("2021-02-01",1,"yyyyMMdd");
20210301
select add_months("2021-02-01",-1,"yyyyMMdd");
20210101
复制
last_day
语法:last_day(string date)
返回值:string
说明:返回本月的最后一天 date is a string in the format 'yyyy-MM-dd HH:mm:ss' or 'yyyy-MM-dd'. 其它格式的输入将会被忽略
eg: select last_day("2021-03-01");
2021-03-31
select last_day("2021-03-01 12:30:23");
2021-03-31
select last_day("2021/03/01 12:30:23"); 格式不支持
NULL
复制
next_day
语法:next_day(string start_date, string day_of_week)
返回值:string
说明:day_of_week 可选参数为星期一到周天的英文单词
星期一Monday简写为Mon,星期二Tuesday简写为Tue,星期三Wednesday简写为Wed,
星期四Thursday简写为Thu,星期五Friday简写为Fri,星期六Saturday简写为Sat,
星期日Sunday简写为Sun
eg: 取当前日期的下一个星期一;
SELECT next_day('2021-03-01', 'Mon');
2021-03-08
SELECT next_day('2021-03-01', 'Monday');
2021-03-08
复制
trunc
语法:trunc(string date, string format)
返回值:string
说明:初始化指定格式的日期
eg:select trunc('2021-03-24','YY');
2021-01-01
select trunc('2021-03-24','MM');
2021-03-01
复制
组合案例
获取上月月初时间
select add_months(trunc('2021-03-24','MM'),-1,'yyyy-MM-dd');
2021-02-01
复制
获取上月月末时间
select last_day(add_months('2021-03-24',-1,'yyyy-MM-dd'));
2021-02-28
复制
获取下月月初时间
select add_months(trunc('2021-03-24','MM'),1,'yyyy-MM-dd');
2021-04-01
复制
获取下月月末时间
select last_day(add_months('2021-03-24',1,'yyyy-MM-dd'));
2021-04-30
复制
时间格式yyyyMMdd转yyyy-MM-dd
select from_unixtime(unix_timestamp('20210304','yyyyMMdd'),'yyyy-MM-dd');
2021-03-04
复制
时间戳格式转yyyy-MM-dd
select from_unixtime(cast(1614787200 as bigint),'yyyy-MM-dd' )
2021-03-04
复制
作弊技巧
select abs(datediff('2016-05-21','2021-03-24'));
1768
复制
文章转载自趣说大数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
数据库国产化替代深化:DBA的机遇与挑战
代晓磊
1265次阅读
2025-04-27 16:53:22
2025年4月国产数据库中标情况一览:4个千万元级项目,GaussDB与OceanBase大放异彩!
通讯员
740次阅读
2025-04-30 15:24:06
国产数据库需要扩大场景覆盖面才能在竞争中更有优势
白鳝的洞穴
609次阅读
2025-04-14 09:40:20
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
516次阅读
2025-04-17 17:02:24
一页概览:Oracle GoldenGate
甲骨文云技术
482次阅读
2025-04-30 12:17:56
GoldenDB数据库v7.2焕新发布,助力全行业数据库平滑替代
GoldenDB分布式数据库
474次阅读
2025-04-30 12:17:50
优炫数据库成功入围新疆维吾尔自治区行政事业单位数据库2025年框架协议采购!
优炫软件
363次阅读
2025-04-18 10:01:22
给准备学习国产数据库的朋友几点建议
白鳝的洞穴
329次阅读
2025-05-07 10:06:14
XCOPS广州站:从开源自研之争到AI驱动的下一代数据库架构探索
韩锋频道
292次阅读
2025-04-29 10:35:54
国产数据库图谱又上新|82篇精选内容全览达梦数据库
墨天轮编辑部
277次阅读
2025-04-23 12:04:21