将 YYYYMMDD 转换为日期格式 YYYY/MM/DD
convert YYYYMMDD to date format YYYY/MM/DD
我正在尝试使用 pig 脚本将 bigdecimal(YYYYMMDD) 转换为日期格式 (YYYY/MM/DD)。为此我写了下面的代码
STOCK_A = LOAD '/user/cloudera/hl7' USING PigStorage('|');
data = FILTER STOCK_A BY ( matches '.*OBR.*');
MSH_DATA = FOREACH data GENERATE ToString(,'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
MSH_DATA = FOREACH data GENERATE ToString(,'yyyy-MM-dd')AS date;
我想知道为什么当您提供 'yyyy-MM-dd' 作为日期格式时预期输出是 2014/09/26?
要实现您的目标,请先将 $8(加载时为 chararray)转换为 date
MSH_DATA = FOREACH data GENERATE ToString(ToDate(, 'yyyyMMdd'),'yyyy/MM/dd') AS date;
MSH_DATA = FOREACH b GENERATE ToString(ToDate(, 'yyyyMMdd','Asia/Kolkata'),'yyyy/MM/dd') AS date;
如果您正在处理来自其他国家/地区的数据,那么您需要在上面的代码中输入时区。 (以上为在印度工作的例子)
我正在尝试使用 pig 脚本将 bigdecimal(YYYYMMDD) 转换为日期格式 (YYYY/MM/DD)。为此我写了下面的代码
STOCK_A = LOAD '/user/cloudera/hl7' USING PigStorage('|');
data = FILTER STOCK_A BY ( matches '.*OBR.*');
MSH_DATA = FOREACH data GENERATE ToString(,'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
MSH_DATA = FOREACH data GENERATE ToString(,'yyyy-MM-dd')AS date;
我想知道为什么当您提供 'yyyy-MM-dd' 作为日期格式时预期输出是 2014/09/26? 要实现您的目标,请先将 $8(加载时为 chararray)转换为 date
MSH_DATA = FOREACH data GENERATE ToString(ToDate(, 'yyyyMMdd'),'yyyy/MM/dd') AS date;
MSH_DATA = FOREACH b GENERATE ToString(ToDate(, 'yyyyMMdd','Asia/Kolkata'),'yyyy/MM/dd') AS date;
如果您正在处理来自其他国家/地区的数据,那么您需要在上面的代码中输入时区。 (以上为在印度工作的例子)