Hive常用的时间相关函数

Hive常用的时间相关函数

查看Hive的内置函数

通过show functions可以查看Hive所有的内置函数
通过desc function extended 函数名可以查看函数的具体用法

hive (default)> show functions;
OK
tab_name
array_contains
ascii
asin
assert_true
atan
avg
base64
between
bin
.....

# 查看upper函数的具体用法
hive (default)> desc function extended upper;
OK
tab_name
upper(str) - Returns str with all characters changed to uppercase
Synonyms: ucase
Example:
  > SELECT upper('Facebook') FROM src LIMIT 1;
  'FACEBOOK'
Time taken: 0.03 seconds, Fetched: 5 row(s)

下面简单介绍一些常用的基础的内置函数,只做简要介绍,具体使用方法可以通过上述方式自己查找一下

常用的时间类函数

  • unix_timestamp(date[, pattern]):将一个日期转换为时间戳
    注意:默认的时间格式是yyyy-MM-dd HH:mm:ss,如果日期不是这种格式无法识别,可以在加一个参数,传入自己想要的格式来解决

  • from_unixtime(unix_time, format):将一个时间戳转换为指定的格式
    注意:如果format没有指定,就是日期+时分秒

  • to_date(expr):将一个标准的日期时间格式的数据截取日期出来

    SELECT to_date(‘2009-07-30 04:17:52’) FROM src LIMIT 1;
    ‘2009-07-30’

  • year(date):返回一个日期的年
    **注意:**日期的格式必须是 ‘yyyy-MM-dd HH:mm:ss’ 或 ‘yyyy-MM-dd’.
    Example:

    SELECT year(‘2009-07-30’) FROM src LIMIT 1;
    2009

    同理,获取月、日等函数为:month day hour minute second

  • weekofyear(date):返回一个日期是这一年的第几周

  • dayofmonth(date):返回日期是这一个月的第几天

  • months_between(date1, date2):返回两个日期的月份之差

    SELECT months_between(‘1997-02-28 10:30:00’, ‘1996-10-30’);
    3.94959677
    注意: 日期的格式必须是标准的日期格式,也可以加上时间

  • add_months(start_date, num_months):日期的月份加一个数

    SELECT add_months(‘2009-08-31’, 1) FROM src LIMIT 1;
    ‘2009-09-30’
    如果想让月份减少可以将num_months设置为负

  • datediff(date1, date2) - 返回date1与date2的日期之差

    SELECT datediff(‘2009-07-30’, ‘2009-07-31’);
    -1

    如果日期格式中有时分秒的话,时分秒会忽略

  • date_add:

  • date_add(start_date, num_days):日期增加

    select date_add(‘2020-12-16’, 1);
    2020-12-17
    Time taken: 0.047 seconds, Fetched: 1 row(s)
    select date_add(‘2020-12-16’, -1);
    2020-12-15
    Time taken: 0.447 seconds, Fetched: 1 row(s)

  • date_sub:和date_add同理,日期减去一个数

  • last_day(date):返回给定日期所属月份的最后一天的日期

    SELECT last_day(‘2020-12-16’) FROM src LIMIT 1;
    2020-12-31

结语

以上是最近学到的常用的时间函数,若有不足或有误的地方,请多多指正。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值