我用了 ToDate(userinput, format)
函数来隐藏我的字符域。我用了 ToDate(userinput, 'MM/dd/yyyy')
把战场从查拉雷转移到 date
但看起来我并没有看到预期的结果。
代码如下:
l_dat = load 'textfile' using PigStorage('|') as (first:chararray,last:chararray,dob:chararray);
c_dat = foreach l_dat generate ToDate(dob,'MM/dd/yyyy') as mydate;
describe c_dat;
dump c_dat;
数据如下所示:
(firstname1,lastname1,02/02/1967)
(John,deloy,05/26/1967)
(frank,fun,05/18/1967)
输出如下所示:
c_dat: {mydate: datetime}
(1967-05-26T00:00:00.000-04:00)
(1967-05-18T00:00:00.000-04:00)
(1967-02-02T00:00:00.000-05:00)
我所期望的输出是dateobjects,其数据如下所示:
(05/26/1967)
(05/18/1967)
(02/02/1967)
如果我做错了什么,请告诉我?
1条答案
按热度按时间xzabzqsa1#
裁判:http://pig.apache.org/docs/r0.12.0/func.html#to-date,todate函数的返回类型是datetime对象。您可以在输出中共享的模式描述中看到这一点
如果日期的格式是必需的,则无需进行任何转换。
如果您对将chararray日期转换为任何其他格式感兴趣,那么在获取datetime对象之后必须使用tostring()函数。
这可以通过以下一个步骤实现。
裁判:http://pig.apache.org/docs/r0.12.0/func.html#to-字符串以获取详细信息。