您可以在 hive 中使用许多功能:取自 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 行
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)to_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 行
4)unix_timestamp :
此函数将日期转换为指定的日期格式,并返回指定日期和 Unix 纪元之间的秒数。如果失败,则返回 0。以下示例返回值 1237487400
hive> SELECT unix_timestamp (‘2009-03-20’, ‘yyyy-MM-dd’);
好的
1237487400
耗时:0.156 秒,提取:1 行
5)unix_timestamp() :该函数使用默认时区返回从 Unix 纪元(1970-01-01 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 [, string format] ) :FROM_UNIX 函数从 Unix epoch 转换指定的秒数,并以 '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(字符串日期1,字符串日期2)
DATEDIFF 函数返回两个给定日期之间的天数。
hive> SELECT DATEDIFF(‘2000-03-01’, ‘2000-01-10’);
好的
51
耗时:0.156 秒,提取:1 行
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
注意:在 MMddyyyy 格式中,M 每次都应该大写
select cast(substring(from_unixtime(unix_timestamp(dt, ‘MMddyyyy’)),1,10) as date) from sample;