我有以下字符串"2014-12-15 18:20:48",但当我解析为datetime时:

A = LOAD 'input.txt' AS (mydate:chararray);
B = FOREACH A GENERATE ToDate(mydate) as datetime;

我收到此错误:"2014-12-15 18:20:48" is malformed at " 18:20:48"另外,当我指定格式ToDate(mydate, 'yyyy-MM-dd HH:mm:ss');时,日期时间将转换为"2014-12-15T18:20:48.000Z"而不是"2014-12-15 18:20:48"。我如何解决这个问题,以便给我"2014-12-15 18:20:48"类型datetime?

最佳答案

如果我们将字符串传递给ToDate函数,则该字符串应为iosstring格式(引用[1])。

ToDate(iosstring)

在第一种情况下,输入字符串不是iosstring格式(缺少T分隔符,表示时间元素的开始)。如果输入字符串是
iosstring格式(引用[1]),它将起作用。

在第二种情况下,您正在调用ToDate的重载方法:

ToDate(用户字符串,格式)

所有ToDate方法的返回类型都是DateTime对象。

如果要获取字符串中的日期,并且需要其他任何格式的日期以进行进一步处理,则必须在ToDate()方法之上使用ToString()方法来获取日期。
所需的格式。

引用:

  • iostring格式:http://www.w3.org/TR/NOTE-datetime
  • ToDate():http://pig.apache.org/docs/r0.12.0/func.html#to-date
  • ToString():http://pig.apache.org/docs/r0.12.0/func.html#to-string
  • 关于datetime - 解析Pig中的自定义日期时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30181450/

    10-13 04:32