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为空?