蜂巢每个月结束日期

时间:2017-12-15 16:23:26

标签: hadoop hive

我希望每个月的最后日期,如1月31日,2月28日,等等。 我在下面尝试使用current_date并且它可以工作但是当我使用我的日期列时它返回null:

SELECT datediff(CONCAT(y, '-', (m + 1), '-', '01'), CONCAT(y, '-', m, '-', '01')) FROM 
(SELECT
month(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd') ) as m, 
year(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd') ) as y, 
day(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd') )
from table2 ) t

返回:

_c0
    NULL 

SELECT
month(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd') ) as m, 
year(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd') ) as y, 
day(from_unixtime(unix_timestamp(C_date, 'yyyyMMdd'),'yyyy-MM-dd') )
from table2) t

返回:

m   | y  | _c2|
3   |2017|  21|

提前致谢。

1 个答案:

答案 0 :(得分:0)

使用last_day()day()函数:

hive> select day(last_day(current_date)) ;
OK
31
Time taken: 0.079 seconds, Fetched: 1 row(s)

在应用to_date()之前,应用last_day()转换您的列。