2

我想直线获取当前日期。

我试着用这个:

FROM_UNIXTIME(UNIX_TIMESTAMP())

它输出这个:

16-03-21

我想要得到它:

2016-03-21 09:34

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

但这对我不起作用。

4

3 回答 3

2

您可以通过将预期格式作为 from_unixtime 函数的参数传递来获取它。

例子 :

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

结果:

2016-03-21 16:03

于 2016-03-21T23:39:32.197 回答
1

试试这个:

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

'2016-03-21' 中的结果

于 2016-03-21T23:22:29.947 回答
0

您可以在 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;

于 2018-07-30T04:53:15.960 回答