【超详细】HIVE 日期函数(当前日期、时间戳转换、前一天日期等)

文章目录

作者:小猪快跑

基础数学&计算数学,从事优化领域5年+,主要研究方向:MIP求解器、整数规划、随机规划、智能优化算法。

如有错误,欢迎指正。如有更好的算法,也欢迎交流!!!------@小猪快跑

相关文献

常量:当前日期、时间戳

返回类型 名称 样例 描述
date current_date current_date = 2024-01-01 返回查询评估开始时的当前日期(从 Hive 1.2.0 开始)。同一查询中的所有current_date调用都返回相同的值。
timestamp current_timestamp current_timestamp = 2024-01-01 00:00:00 返回查询评估开始时的当前时间戳(从 Hive 1.2.0 开始)。同一查询中的所有current_date调用都返回相同的值。

前一天日期、后一天日期

返回类型 名称 样例
pre 2.1.0: string 2.1.0 on: date date_add(date/timestamp/string startdate, tinyint/smallint/int days) date_add('2008-12-31', 1) = 2009-01-01
pre 2.1.0: string 2.1.0 on: date date_sub(date/timestamp/string startdate, tinyint/smallint/int days) date_sub('2008-12-31', 1) = 2008-12-30
hive 复制代码
date_sub(current_date, 1) -- 昨天
date_add(current_date, 1) -- 明天

获取日期中的年、季度、月、周、日、小时、分、秒等

|--------|-------------------------------------------------|-------------------------------------------|-------------|
| 返回类型 | 名称 | 样例 | 描述 |
| int | year(string date) | year("1970-01-01") = 1970 | 年 |
| int | year(string date) | year("1970-01-01 00:00:00") = 1970 | 年 |
| int | quarter(date/timestamp/string) | quarter('2015-04-08') = 2 | 季度 |
| int | month(string date) | month("1970-11-01 00:00:00") = 11 | 月 |
| int | month(string date) | month("1970-11-01") = 11 | 月 |
| int | weekofyear(string date) | weekofyear("1970-11-01 00:00:00") = 44 | 周 |
| int | weekofyear(string date) | weekofyear("1970-11-01") = 44 | 周 |
| int | day(string date) dayofmonth(date) | day("1970-11-01 00:00:00") = 1 | 日 |
| int | day(string date) dayofmonth(date) | day("1970-11-01") = 1 | 日 |
| int | hour(string date) | hour('2009-07-30 12:58:59') = 12 | 小时 |
| int | hour(string date) | hour('12:58:59') = 12 | 小时 |
| int | minute(string date) | | 分 |
| int | second(string date) | | 秒 |
| string | last_day(string date) | last_day('2015-01-14') = 2015-01-31 | 当月最后一天 |
| string | next_day(string start_date, string day_of_week) | next_day('2015-01-14', 'TU') = 2015-01-20 | 给定日期后最近的星期几 |

时间戳转换

时间戳 to 日期

返回类型 名称 样例 描述
string from_unixtime(bigint unixtime[, string pattern]) from_unixtime(0)=1970-01-01 00:00:00 (1970-01-01 00:00:00 UTC)之后多少秒的时间,注意不同时区结果不同

日期 to 时间戳

返回类型 名称 样例 描述
bigint unix_timestamp(string date) unix_timestamp('2009-03-20 11:30:01') = 1237573801 (1970-01-01 00:00:00 UTC)之后多少秒,注意不同时区结果不同
bigint unix_timestamp(string date, string pattern) unix_timestamp('2009-03-20', 'yyyy-MM-dd') = 1237532400 (1970-01-01 00:00:00 UTC)之后多少秒,注意不同时区结果不同 https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html

日期之间月、天数差

返回类型 名称 样例 描述
double months_between(date1, date2) months_between('1997-02-28 10:30:00', '1996-10-30') = 3.94959677 返回日期 date1 和 date2 之间的月数(从 Hive 1.2.0 开始)。如果 date1 晚于 date2,则结果为正数。如果 date1 早于 date2,则结果为负数。 date1 和 date2 类型:timestamp | 'yyyy-MM-dd' | 'yyyy-MM-dd HH:mm:ss'
int datediff(string enddate, string startdate) datediff('2009-03-01', '2009-02-27') = 2
相关推荐
tsyjjOvO3 天前
SpringMVC 从入门到精通
数据仓库·hive·hadoop
Francek Chen3 天前
【大数据存储与管理】分布式数据库HBase:05 HBase运行机制
大数据·数据库·hadoop·分布式·hdfs·hbase
zzzzzwbetter3 天前
Hadoop完全分布式部署-Master的NameNode以及Slaver2的DataNode未启动
大数据·hadoop·分布式
weixin_449310843 天前
ETL转换和数据写入小满OKKICRM的技术细节
数据仓库·php·etl
IvanCodes3 天前
Hive IDE连接及UDF实战
ide·hive·hadoop
yumgpkpm3 天前
华为昇腾910B 开源软件GPUStack的介绍(Cloudera CDH、CDP)
人工智能·hadoop·elasticsearch·flink·kafka·企业微信·big data
lifewange4 天前
Hive数据库
数据库·hive·hadoop
五月天的尾巴5 天前
hive数据库模糊查询表名
hive·查询表名
蓝魔Y5 天前
hive—1.1、执行优化
hive
快乐非自愿5 天前
OpenClaw 生态适配:Hadoop/Hive 技能现状与企业级集成方案
大数据·hive·hadoop·分布式·openclaw