我想直线获取当前日期。
我试着用这个:
FROM_UNIXTIME(UNIX_TIMESTAMP())
它输出这个:
16-03-21
我想要得到它:
2016-03-21 09:34
我该怎么做?我在这里看到直线文档: https ://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-DateFunctions
但这对我不起作用。
我想直线获取当前日期。
我试着用这个:
FROM_UNIXTIME(UNIX_TIMESTAMP())
它输出这个:
16-03-21
我想要得到它:
2016-03-21 09:34
我该怎么做?我在这里看到直线文档: https ://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-DateFunctions
但这对我不起作用。
您可以通过将预期格式作为 from_unixtime 函数的参数传递来获取它。
例子 :
select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:MM');
结果:
2016-03-21 16:03
试试这个:
Select to_date(from_unixtime(unix_timestamp())) from my table ...
'2016-03-21' 中的结果
您可以在 hive 中使用许多功能:取自http://atiblog.com/date-function-hive/
1)来自_unixtime:
此函数将 unix epoch (1970-01-01 00:00:00 UTC) 的秒数转换为 STRING,表示当前系统时区中该时刻的 TIMESTAMP,格式为“1970-01-01 00 :00:00”。以下示例返回包括时间在内的当前日期。
hive> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP());
OK
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’);
OK 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’);
OK 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’);
OK 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’);
OK 946665000 所用时间:0.147 秒,获取:1 行
6)unix_timestamp( string date ) : 该函数将格式为 'yyyy-MM-dd HH:mm:ss' 的日期转换为 Unix 时间戳。这将返回指定日期和 Unix 纪元之间的秒数。如果失败,则返回 0。
hive> select UNIX_TIMESTAMP(‘2000-01-01 10:20:30’,‘yyyy-MM-dd’);
OK 946665000 所用时间:0.148 秒,获取:1 行
7)unix_timestamp(string date, string pattern):该函数将日期转换为指定的日期格式,并返回指定日期与Unix纪元之间的秒数。如果失败,则返回 0。
hive> select FROM_UNIXTIME( UNIX_TIMESTAMP() );
8)from_unixtime( bigint number_of_seconds [, string format] ) : 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(string date) WEEKOFYEAR 函数返回日期的周数。
hive> SELECT WEEKOFYEAR(‘2000-03-01 10:20:30’);
好的 9
11)DATEDIFF( string date1, string date2 ) DATEDIFF 函数返回两个给定日期之间的天数。
hive> SELECT DATEDIFF(‘2000-03-01’, ‘2000-01-10’);
OK 51 所用时间:0.156 秒,获取:1 行
12)DATE_ADD(string date, int days) DATE_ADD函数将指定日期加上天数
hive> SELECT DATE_ADD(‘2000-03-01’, 5);
OK 2000–03–06
13)DATE_SUB(string date, int days) DATE_SUB函数减去指定日期的天数
hive> SELECT DATE_SUB(‘2000-03-01’, 5);
OK 2000–02–25 14)DATE CONVERSIONS :将MMddyyyy格式转换为Unixtime
注意:在 MMddyyyy 格式中,M 每次都应该大写
select cast(substring(from_unixtime(unix_timestamp(dt, ‘MMddyyyy’)),1,10) as date) from sample;