Hive:通过传递月份,工作日和事件来生成日期

时间:2018-01-31 10:32:01

标签: hive timestamp

我正在寻找从表格中导出日期时间值的选项,其中数据以下列格式存在

col1(year) - 2007
col2(month) - 03
col3(day) - 1 [ 1 (sunday) , 2 (monday) and so on]
col4(occurence) - 2 (2nd week or last week)

此表需要用作 - 从2007年3月第2周起的星期日获取日期。

有没有办法可以使用这些列并在Hive中获得2007年3月11日的日期?

1 个答案:

答案 0 :(得分:0)

@shah;我假设col1,col2,col3和col4是整数,逻辑是获取上个月的最后一天,然后添加x周,然后从该日期开始第二天。以下是示例代码:

Sample: 2008 02  1 3  (third sunday of feb 2018) 

Query: select next_day(date_add(last_day(concat_ws('-',cast(2018 as string),cast(2-1 as string),cast(1 as string))), 7*(3-1)) ,if(1=1,'SUN',if(1=2,'MON', if(1=3,'TUE',if(1=4,'WED',if(1=5,'THU',if(1=6,'FRI',if(1=7,'SAT','SUN'))))))));

Result: 2018-02-18  

Steps: Change 2018 into col1, change cast(2-1 as string) into cast(col2-1 as string), change 7*(3-1) into 7*(col4-1) and change if(1=1, into if(col3=1,

我使用的函数是next_day,date_add,last_day和concat_ws。您可以在此链接上找到它们的用法。 https://www.qubole.com/resources/hive-function-cheat-sheet/

希望这会有所帮助。谢谢。