ISO 日期格式的转换,从字符串到日期,给出错误?
Conversion of ISO date format, from string to date,gives error?
我一直在尝试将 ISO 日期格式 ('2016-06-23T20:04:41.914Z') 转换为日期数据类型。在 Pig Docs 中,有函数 ToDate 可以将字符串转换为日期(this)。
所以我尝试了不同的方式:
1.
b = FOREACH a GENERATE ToDate(status_date,'yyyy-MM-dd hh:mm:ss.SSS);
错误:
Caused by: java.lang.IllegalArgumentException: Invalid format: "2016-06-23T20:04:41.914Z" is malformed at "T20:04:41.914Z"
2.
b = FOREACH a GENERATE ToDate(status_date);
错误:
Caused by: java.lang.IllegalArgumentException: Invalid format: ""
3.
b = FOREACH a GENERATE ToDate(status_date,'yyyy-MM-ddThh:mm:ss.SSSZ');
错误:
Caused by: java.lang.IllegalArgumentException: Illegal pattern component: T
如果我遗漏了什么或者除了编写 udf 和使用 concat 之外还有其他方法,请告诉我。
如果需要任何其他信息,也请告诉我。
第二种方法应该有效,你的数据有一些记录有字段status_date为空?
我一直在尝试将 ISO 日期格式 ('2016-06-23T20:04:41.914Z') 转换为日期数据类型。在 Pig Docs 中,有函数 ToDate 可以将字符串转换为日期(this)。 所以我尝试了不同的方式:
1.
b = FOREACH a GENERATE ToDate(status_date,'yyyy-MM-dd hh:mm:ss.SSS);
错误:
Caused by: java.lang.IllegalArgumentException: Invalid format: "2016-06-23T20:04:41.914Z" is malformed at "T20:04:41.914Z"
2.
b = FOREACH a GENERATE ToDate(status_date);
错误:
Caused by: java.lang.IllegalArgumentException: Invalid format: ""
3.
b = FOREACH a GENERATE ToDate(status_date,'yyyy-MM-ddThh:mm:ss.SSSZ');
错误:
Caused by: java.lang.IllegalArgumentException: Illegal pattern component: T
如果我遗漏了什么或者除了编写 udf 和使用 concat 之外还有其他方法,请告诉我。 如果需要任何其他信息,也请告诉我。
第二种方法应该有效,你的数据有一些记录有字段status_date为空?