【问题标题】:How Do we extract only the DATE portion from datetime datatype column in Pig?我们如何从 Pig 中的 datetime 数据类型列中仅提取 DATE 部分?
【发布时间】:2016-07-28 11:12:44
【问题描述】:

例如:我将 Hive 表列(日期时间数据类型)值带入 Pig 并希望提取日期部分。我尝试过使用 ToDate 函数。以下是错误信息。请在这种危急情况下帮助我。

此列中的原始值为“2014-07-29T06:01:33.705-04:00”,我需要输出为“2014-07-29”

ToDate(eff_end_ts,'YYYY-MM-DD') AS Delta_Column;

2016-07-28 07:07:25,298 [主要] 错误 org.apache.pig.tools.grunt.Grunt - 错误 1045:无法将 org.apache.pig.builtin.ToDate 的匹配函数推断为多个或没有 合身。请使用显式强制转换。

【问题讨论】:

    标签: apache-pig


    【解决方案1】:

    假设您的列名是 f1,其时间戳的值为 2014-07-29T06:01:33.705-04:00,您将必须使用 GetYear()、GetMonth、GetDay 并将其 CONCAT 转换为所需的格式。

    B = FOREACH A GENERATE CONCAT(
                           CONCAT(
                           CONCAT((chararray)GetYear(f1),'-')),
                           (CONCAT((chararray)GetMonth(f1),'-')),
                                  (chararray)GetDay(f1)) AS Day;
    

    【讨论】:

      【解决方案2】:

      我做了一些工作来弄清楚它是通过这种方式工作的:

      ToDate(ToString(eff_end_ts,'YYYY-MM-DD'),'YYYY-MM-DD') AS (datetime: Delta_Column)
      

      【讨论】:

        猜你喜欢
        • 2019-08-31
        • 1970-01-01
        • 2015-06-22
        • 2010-10-08
        • 2016-06-04
        • 1970-01-01
        • 2014-03-21
        • 2014-02-26
        • 1970-01-01
        相关资源
        最近更新 更多