Hive:获取指定月份的日期列表

时间:2016-12-12 08:22:02

标签: hive

对于给定的月份,比如12月我想要以下行作为输出。有没有办法通过内置的Hive UDF实现这一目标?

1日 - 12月2016
2日 - 12月2016



30日 - 12月2016
31日 - 12月2016

我自己找到答案(其中dual是ORACLE中的虚拟表):

从中选择date_add('2016-11-01',cntr - 1)   (选择explode(num)AS cntr from     (选择阵列(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23, 24,25,26,27,28,29,30,31)来自双)temp1的数字    )temp2 其中cntr< = day(last_day('2016-11-01'));

2 个答案:

答案 0 :(得分:0)

您的仓库中需要一个日历日期维度date_dim表。此表应位于每个数据仓库中,以用作维度和类似您的情况。我建议你创建并加载这个表。您可以按年和月生成所需的行查询date_dim过滤。 例如,您可以在此处下载:http://www.kimballgroup.com/data-warehouse-business-intelligence-resources/books/microsoft-data-warehouse-dw-toolkit/或查找其他来源或生成您自己的来源 另请参阅有关date_dim生成的文章:https://www.codeproject.com/articles/647950/create-and-populate-date-dimension-for-data-wareho

答案 1 :(得分:0)

使用hive的date_format()。假设你的date_field变量。

select date_format(date_field,'dd-MMM-yyyy') from table1;

其中table1是表名。