我们如何从Pig中的datetime数据类型列中仅提取DATE部分?

时间:2016-07-28 11:12:45

标签: apache-pig

对于Ex:我将Hive表列(日期时间数据类型)值带入Pig并想要提取; y为DATE部分。我尝试过使用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 [main] ERROR org.apache.pig.tools.grunt.Grunt    - 错误1045:无法将org.apache.pig.builtin.ToDate的匹配函数推断为多个或没有   适合。请使用明确的演员。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我做了工作来弄清楚它的工作方式:

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