猪ToDate(日期,' dd / MMM / yyyy')问题

时间:2016-02-26 14:22:32

标签: java date datetime hadoop apache-pig

我将日期视为以[30/Sep/2015:08:00:36 -0700]格式存储的chararray。

test = FOREACH b GENERATE ToDate(SUBSTRING(time,1,12),'dd/MMM/yyyy') AS date;

它为我提供了2015-10-31T00:00:00.000+05:30

之类的输出

根据文档link ToDate(userstring,format)格式的第二个参数是 Java SimpleDateFormat class,因此它应该以datetime格式提供输出30/Sep/2015。 我将使用该日期进行排序。

2 个答案:

答案 0 :(得分:2)

<强>输入

Input

<强>脚本

A = LOAD 'test12.txt' AS (dt:chararray);
B = FOREACH A GENERATE ToDate(SUBSTRING($0,1,12),'dd/MMM/yyyy');
C = ORDER B BY $0 ASC;
D = FOREACH C GENERATE ToString($0,'dd/MMM/yyyy');
DUMP  D;

<强>输出

Output

答案 1 :(得分:0)

我在类java.text.SimpleDateFormat(你的链接)中看不到任何ToDate方法。

我已准备好此测试以显示行为的一致性

@Test
    public void date()
    {
        SimpleDateFormat sdf= new SimpleDateFormat("dd/MMM/yyyy");
        String v="[30/Sep/2015:08:00:36 -0700]";
        try {
            Date d=sdf.parse(v.substring(1,12));
            System.out.println(sdf.format(d));
        } catch (ParseException e) {
            e.printStackTrace();
        }

    }

我的输出是

30 /月/ 2015

希望这可以提供帮助