如何用pig拉丁语将chararray转换为带毫秒的datetime



我想转换以下值,它是pig 中的一个字符数组

2016-05-11 23:59:57.628197

2016-05-11T23:59:57.628-05:00

我该怎么做?

以下是我尝试考虑的别名"a2"包含名为"input_date_value"列中chararray中的日期时间值列表

FOREACH a2 GENERATE input_date_value AS input_date:chararray,
                       ToDate(input_date_value,'YYYY-MM-DD HH:mm:ss.SSSSSS') AS modification_datetime:datetime;

用于输入-

2002-07-11 16:58:40.249764

输出为-

2002-01-11T16:58:40.249-05:00

像"07"这样的月份值没有被提取,创建的时间戳将月份设置为01',即所有日期的每次一月。

有人能帮忙吗。我做错了什么?

https://pig.apache.org/docs/r0.11.1/func.html#to-dateToDate占用SimpleDateFormat仅支持毫秒http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

您看到的-05:00是ToDate时区实际上被截断为3位数字,因为它只支持毫秒

在分析日期值时使用小写字符d而不是大写字母d。

现在,我已经设法自己在(In Pig 0.11)上修复了它

显然Pig0.11不支持我之前用于解析月份和日期的日期格式组件。

我发现以下推论暗示了上述的不相容性https://www.w3.org/TR/NOTE-datetime

用途:

'YYYY-MM-ddHH:MM:ss.SSSS'

而不是"YYYY-MM-DDHH:MM:ss.SSSSSSS"

现在它给出了正确的输出。

输入:

2001年-11-28 16:04:49.22388

输出:

2001年-11-28T16:04:49.223-05:00

相关内容

  • 没有找到相关文章

最新更新