Hive 基本教程

Hive SQL

Hive 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/hive-sql-datediff-function.html

Hive 两个指定日期差值计算操作函数 datediff 详解

Hive SQL 内置函数全解 Hive SQL 内置函数全解


Hive 的内置函数 datediff 日期操作函数是对两个日期进行相减差值,计算两个时间的差值,并转换成指定的单位,如:天、小时、分等时间支持的单位。

语法说明

语法

DATEDIFF(enddate, startdate)

说明

函数参数说明如下:

  • enddate:被减的日期内容,一般是更大的那个日期数据,若输入为 string 类型会隐式转换为 datetime 类型后参与运算,其它类型抛异常。
  • startdate:对比的日期内容,一般是更小的那个日期数据,若输入为 string 类型会隐式转换为 datetime 类型后参与运算,其它类型抛异常。

参数日期的格式需要是 'yyyy-MM-dd' 或 'yyyy-MM-dd HH:mm:ss',其中时间的信息计算时会忽略。

返回值说明如下:

  • 返回值:返回时间差值,即结束日期减去开始日期的天数,int 类型。

如果结束日期比起始日期小,则返回负数。

示例如下:

DATEDIFF('2021-10-28', '2021-10-26') = 2

若 start = '2020-12-31 23:59:59',end = '2021-01-01 00:00:00':

DATEDIFF(end, start) = 1 

除了上面的日期格式,它实际上还支持 2022-9-3 这种格式。如下例子:

hive> SELECT DATEDIFF('2022-10-15', '2022-9-3')
42

如果我的日期是 2022/10/15 这样的,该这么办?这时候可以用 hive 的 REGEXP_REPLACE 这个内置函数。示例如下:

hive> SELECT DATEDIFF(REGEXP_REPLACE('2022/10/15', "/", "-"), REGEXP_REPLACE('2022/9/3', "/", "-"))
42

常用例子

计算日期对应的星期数

利用 pmoddatediff 函数进行操作,示例如下:

pmod(datediff(dp, '2012-01-01'), 7)

返回值为 “0-6”(“0-6” 分别表示“星期日-星期六”)。

MySQL DATEDIFF() 函数返回两个日期之间的天数,即差值。 ...
Hive 提供了取模操作的函数 pmod,也叫做取余函数,它可以处理 int 或 double 类型参数,返回取余整数或浮点数。 ...
Calendar类的getTimeInMillis()方法获取两个日期的毫秒数,然后相减并除以一天的毫秒数,即可得到两个日期之间的天数。性能 ...
###手动计算方式这种方法涉及到将日期转换为毫秒数,然后计算两个日期的毫秒差,最后将毫秒差转换为天数。Maven依赖:Gradle依赖:## ...
下面我将介绍四种常用的方法,包括使用Java8日期时间API,使用Joda-Time库,使用ApacheCommons库以及手动计算的方法。 ...