将YYYYMMDD转换为日期格式YYYY / MM / DD

时间:2016-12-20 11:13:57

标签: apache-pig

我正在尝试使用pig脚本将bigdecimal(YYYYMMDD)转换为日期格式(YYYY / MM / DD)。为此,我写了下面的代码

STOCK_A = LOAD '/user/cloudera/hl7' USING PigStorage('|');
data = FILTER STOCK_A BY ($1 matches '.*OBR.*');
MSH_DATA = FOREACH data GENERATE ToString($8,'yyyy-MM-dd')AS date;

我得到的输出是

20140926-01-01
20140929-01-01
20141002-01-01

虽然预期的输出是

2014/09/26
2014/09/29
2014/10/02

样品有日期

20140926
20140929
20141002

2 个答案:

答案 0 :(得分:2)

MSH_DATA = FOREACH data GENERATE ToString($8,'yyyy-MM-dd')AS date;

我想知道为什么当你提供'yyyy-MM-dd'作为日期格式时,预期产量是2014/09/26? 为了实现你的目标,首先将$ 8(加载时为chararray)转换为日期

MSH_DATA = FOREACH data GENERATE ToString(ToDate($8, 'yyyyMMdd'),'yyyy/MM/dd') AS date;

答案 1 :(得分:1)

MSH_DATA = FOREACH b GENERATE ToString(ToDate($7, 'yyyyMMdd','Asia/Kolkata'),'yyyy/MM/dd') AS date;

如果您正在处理来自其他国家/地区的数据,那么您需要使用上面的时区代码。 (以上在印度工作的例子)