我想在猪身上做的事情在sql中很常见。 我的日期字段的形式为yyy-mm-dd hh:mm:ss,我有另一个字段,其中包含一个表示小时数的整数。有没有办法轻松地将整数添加到datetime字段,以便我们得到我们对时钟数学的期望结果。
示例:日期是2013-06-01:23:12:12。
然后我加2小时
我应该得到2013-06-02 01:12:12。
答案 0 :(得分:6)
最新发布的Pig(0.11.0)应该是可能的。但是小时数(时间)应该是ISO8601 Duration Format
。它提供了类AddDuration
,它允许我们使用Duration对象添加DateTime对象。您可以在此page找到有关AddDuration的更多信息。
修改:
是的,您可以添加负数小时。我在我的Ubuntu盒子上试过这个:
输入:
2009-01-07T01:07:01.000Z,PT1S
2008-02-06T02:06:02.000Z,PT1M
2007-03-05T03:05:03.000Z,PT-1H
查询:
grunt> a = LOAD '/pig.txt' USING PigStorage(',') AS (dt:datetime, dr:chararray);
grunt> b = FOREACH a GENERATE AddDuration(dt, dr) AS dt1;
grunt> dump b;
输出:
(2009-01-07T01:07:02.000Z)
(2008-02-06T02:07:02.000Z)
(2007-03-05T02:05:03.000Z)