我有以下字符串 "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"
键入日期时间?
1条答案
按热度按时间nxowjjhe1#
如果我们将字符串传递给todate函数,那么字符串应该是iosstring格式(参考文献[1])。
todate(字符串)
在第一种情况下,输入字符串不是iosstring格式(缺少t分隔符,表示时间元素的开始)。如果输入字符串是iosstring格式(参考文献[1]),它将工作。
在第二种情况下,调用todate的重载方法:
todate(用户字符串,格式)
all todate方法的返回类型是datetime对象。
如果要以字符串形式获取日期,并且需要以任何其他格式进行进一步处理,则必须在todate()方法的基础上使用tostring()方法以获得所需格式的日期。
参考文献:
iostring格式:http://www.w3.org/tr/note-datetime
todate():http://pig.apache.org/docs/r0.12.0/func.html#to-日期
tostring():http://pig.apache.org/docs/r0.12.0/func.html#to-字符串