Hive当前日期功能

时间:2016-03-21 22:35:43

标签: hadoop hive oozie beeline

我想直接获取当前日期。

我试着用这个:

FROM_UNIXTIME(UNIX_TIMESTAMP())

它输出:

16-03-21

我希望得到它:

2016-03-21 09:34

我该怎么办?我在这里看到直线文档: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-DateFunctions

但它对我没有用。

3 个答案:

答案 0 :(得分:1)

你可以通过将期望的格式作为from_unixtime函数的参数传递来获得它。

示例:

选择from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:MM');

结果:

2016-03-21 16:03

答案 1 :(得分:0)

试试这个:

 Select to_date(from_unixtime(unix_timestamp())) from my table ...

结果于'2016-03-21'

答案 2 :(得分:0)

您可以在蜂巢中使用许多功能:取自http://atiblog.com/date-function-hive/

1)from_unixtime:

此函数将unix纪元(1970-01-01 00:00:00 UTC)的秒数转换为STRING,该字符串表示当前系统时区中该时刻的TIMESTAMP,格式为“ 1970-01” -01 00:00:00”。下面的示例返回当前日期,包括时间。

hive> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP());
2015–05–18 05:43:37 花费时间:0.153秒,已获取:1行(S)

2)from_utc_timestamp:- 此函数假定第一个表达式中的字符串为UTC,然后将该字符串转换为第二个表达式的时区。此函数和to_utc_timestamp函数进行时区转换。在下面的示例中,t1是一个字符串。 hive> SELECT from_utc_timestamp(‘1970-01-01 07:00:00’, ‘JST’); 好 1970–01–01 16:00:00 花费时间:0.148秒,获取:1行

3)到_utc_timestamp: 此函数假定第一个表达式中的字符串位于第二个表达式中指定的时区中,然后将该值转换为UTC格式。此函数和from_utc_timestamp函数进行时区转换。 hive> SELECT to_utc_timestamp (‘1970-01-01 00:00:00’,‘America/Denver’); 好 1970–01–01 07:00:00 花费时间:0.153秒,已获取:1行(S)

4)unix_timestamp: 此函数将日期转换为指定的日期格式,并返回指定日期和Unix纪元之间的秒数。如果失败,则返回0。以下示例返回值1237487400 hive> SELECT unix_timestamp (‘2009-03-20’, ‘yyyy-MM-dd’); 好 1237487400 耗时:0.156秒,已获取:1行(S)

5)unix_timestamp():此函数使用默认时区返回Unix纪元(1970年1月1日00:00:00 UTC)的秒数。

hive> select UNIX_TIMESTAMP(‘2000-01-01 00:00:00’); 好 946665000 花费时间:0.147秒,获取:1行

6)unix_timestamp(字符串日期): 此函数将日期格式为“ yyyy-MM-dd HH:mm:ss”的日期转换为Unix时间戳。这将返回指定日期和Unix纪元之间的秒数。如果失败,则返回0。 hive> select UNIX_TIMESTAMP(‘2000-01-01 10:20:30’,‘yyyy-MM-dd’); 好 946665000 花费时间:0.148秒,获取:1行

7)unix_timestamp(字符串日期,字符串模式): 此函数将日期转换为指定的日期格式,并返回指定日期和Unix纪元之间的秒数。如果失败,则返回0。 hive> select FROM_UNIXTIME( UNIX_TIMESTAMP() );

8)from_unixtime(bigint number_of_seconds [,字符串格式]):FROM_UNIX函数从Unix时代转换指定的秒数,并以'yyyy-MM-dd HH:mm:ss'格式返回日期。

hive> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP());

9)To_Date(字符串时间戳):

hive> select TO_DATE(‘2000-01-01 10:20:30’); 好 2000–01–01

10)WEEKOFYEAR(字符串日期) WEEKOFYEAR函数返回日期的星期数。 hive> SELECT WEEKOFYEAR(‘2000-03-01 10:20:30’); 好 9

11)DATEDIFF(字符串date1,字符串date2) DATEDIFF函数返回两个给定日期之间的天数。 hive> SELECT DATEDIFF(‘2000-03-01’, ‘2000-01-10’); 好 51 耗时:0.156秒,已获取:1行(S)

12)DATE_ADD(字符串日期,整数天) DATE_ADD函数将天数添加到指定的日期 hive> SELECT DATE_ADD(‘2000-03-01’, 5); 好 2000–03–06

13)DATE_SUB(字符串日期,整数天) DATE_SUB函数减去指定日期的天数 hive> SELECT DATE_SUB(‘2000-03-01’, 5); 好 2000–02–25 14)日期转换:将MMddyyyy格式转换为Unixtime

注意:M每次都应以MMddyyyyy格式大写

select cast(substring(from_unixtime(unix_timestamp(dt, ‘MMddyyyy’)),1,10) as date) from sample;