是否有任何表达式可以获取Hive(v0.14.1)中DateTime字段的WEEK
,DAYOFWEEK
和Yii::$app->runAction('new_controller/new_action', $params);
,它们与MySql中的这些buildin函数做同样的事情?< / p>
这里是我想要的规范(来自MySql doc):
注意: 1.函数quarter()是在Hive 1.3中引入的,但是我需要一个expr来支持更低版本。 2.支持函数weekofyear()而不是week(),但是有一点不同。但没关系,所以请忽略这个。
答案 0 :(得分:6)
假设DateTime字段为order_time
PMOD(DATEDIFF(order_time, '2012-01-01'), 7)
WEEKOFYEAR(order_time)
(INT((MONTH(order_time)-1)/3)+1)
QUARTER(order_time)
答案 1 :(得分:1)
仅使用数学就知道如何将一个月变成四分之一总是有帮助的:
floor((cast(substr(visit_date, 6,2) as int) - 1) / 3) + 1
答案 2 :(得分:0)
在https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF,您可以找到&#39;日期功能&#39;。你会发现&#39; Quarter&#39;和周&#39;那里。
对于dayofweek,你可以使用类似的东西:
CASE
WHEN from_unixtime(unix_timestamp("2012-10-12 20:53:12"), 'EEEE') = 'Monday' THEN 1
WHEN from_unixtime(unix_timestamp("2012-10-12 20:53:12"), 'EEEE') = 'Tuesday' THEN 2
WHEN from_unixtime(unix_timestamp("2012-10-12 20:53:12"), 'EEEE') = 'Wednesday' THEN 3
WHEN from_unixtime(unix_timestamp("2012-10-12 20:53:12"), 'EEEE') = 'Thursday' THEN 4
WHEN from_unixtime(unix_timestamp("2012-10-12 20:53:12"), 'EEEE') = 'Friday' THEN 5
WHEN from_unixtime(unix_timestamp("2012-10-12 20:53:12"), 'EEEE') = 'Saturday' THEN 6
WHEN from_unixtime(unix_timestamp("2012-10-12 20:53:12"), 'EEEE') = 'Sunday' THEN 7
END AS day_of_week
答案 3 :(得分:0)
要获取Hive <1.3.0的季度,请使用ceil(month(order_time) / 3.0)
和quarter(order_time)
用于Hive> = 1.3.0
一周中的某天使用date_format('2016-12-01' ,'u')
和WEEKOFYEAR(order_time)
表示一年中的第几周