【问题标题】:Hive Current date functionHive 当前日期函数
【发布时间】:2016-07-08 15:56:11
【问题描述】:

我想在直线中获取当前日期。

我试过用这个:

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()) 导致 '2016-03-21 18:16:20'
  • 但我需要将此字符串转换为要插入到 oracle 日期列中的日期类型

标签: hadoop hive oozie beeline


【解决方案1】:

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

例子:

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

结果:

2016-03-21 16:03

【讨论】:

    【解决方案2】:

    试试这个:

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

    “2016-03-21”中的结果

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2018-03-01
        • 2015-04-29
        • 1970-01-01
        • 2015-07-26
        • 2013-01-04
        • 2017-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多