hive 计算周几_hive返回星期几的方法

在Hive中没有内置返回星期几的函数,但可以通过结合datediff和pmod函数实现。例如:pmod(datediff('#date#', '2012-01-01'), 7),返回0-6分别对应星期日-星期六。此外,还可以使用pmod(datediff(#date#, '1920-01-01') - 3, 7)。附录中提供了Hive日期函数的详细说明。" 128420477,10522569,Python3:从eval到ast.literal_eval的安全转换,"['Python', '开发语言', '安全']
摘要由CSDN通过智能技术生成

熟悉hive的人都知道,在原生版本中,目前并没有返回星期几的函数。为了解决这个问题,除了利用java自己编写udf外,也可以利用现有hive函数实现,笔者整理了以下内容供大家参考: hive返回星期几的方法:pmod(datediff(#date#, 2012年任意一个星期日的日期),

熟悉hive的人都知道,在原生版本中,目前并没有返回星期几的函数。为了解决这个问题,除了利用java自己编写udf外,也可以利用现有hive函数实现,笔者整理了以下内容供大家参考:

hive返回星期几的方法:pmod(datediff('#date#', '2012年任意一个星期日的日期'), 7) 。2012-01-01刚好是星期日,大家可以记忆为:

方法:pmod(datediff('#date#', '2012-01-01'), 7)

返回值:int

说明:1、返回值为“0-6”(“0-6”分别表示“星期日-星期六”);2、需要注意pmod和 datediff 函数的使用方法.

解析:

1、datediff 是两个日期相减的函数,hive日期函数可以见附录:

日期相减函数:datediff

语法:datediff(string enddate, string startdate)

返回值: int

说明: 返回两个时间参数的相差天数。

2、 pmod 是正取余函数:

正取余函数 : pmod

语法: pmod(int a, int b),pmod(double a, double b)

返回值: int double

说明: 返回正的a除以b的余数

特殊说明:

这个方法也不是唯一的方法,只是利用了datediff 和pmod函数的特点,组合使用而出。内部牛人分享的方法也可以达到相同的目的:

pmod(datediff(#date#, '1920-01-01') - 3, 7)

附录:hive日期函数

返回类型

函数

说明

string

from_unixtime(bigint unixtime[, string format])

UNIX_TIMESTAMP参数表示返回一个值’YYYY- MM – DD HH:MM:SS’或YYYYMMDDHHMMSS.uuuuuu格式,这取决于是否是在一个字符串或数字语境中使用的功能。该值表示在当前的时区。

bigint

unix_timestamp()

如果不带参数的调用,返回一个Unix时间戳(从’1970- 01 – 0100:00:00′到现在的UTC秒数)为无符号整数。

bigint

unix_timestamp(string date)

指定日期参数调用UNIX_TIMESTAMP(),它返回参数值’1970- 01 – 0100:00:00′到指定日期的秒数。

bigint

unix_timestamp(string date, string pattern)

指定时间输入格式,返回到1970年秒数:unix_timestamp(’2009-03-20′, ‘yyyy-MM-dd’) = 1237532400 参考:http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html

string

to_date(string timestamp)

返回时间中的年月日: to_date(“1970-01-01 00:00:00″) = “1970-01-01″

string

to_dates(string date)

给定一个日期date,返回一个天数(0年以来的天数)

int

year(string date)

返回指定时间的年份,范围在1000到9999,或为”零”日期的0。

int

month(string date)

返回指定时间的月份,范围为1至12月,或0一个月的一部分,如’0000-00-00′或’2008-00-00′的日期。

int

day(string date) dayofmonth(date)

返回指定时间的日期

int

hour(string date)

返回指定时间的小时,范围为0到23。

int

minute(string date)

返回指定时间的分钟,范围为0到59。

int

second(string date)

返回指定时间的秒,范围为0到59。

int

weekofyear(string date)

返回指定日期所在一年中的星期号,范围为0到53。

int

datediff(string enddate, string startdate)

两个时间参数的日期之差。

int

date_add(string startdate, int days)

给定时间,在此基础上加上指定【本文来自鸿网互联 (http://www.68idc.cn)】的时间段。

int

date_sub(string startdate, int days)

给定时间,在此基础上减去指定的时间段。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值