0
我想在猪身上做的事情在sql中非常常见。 我有日期字段的形式为yyy-mm-dd hh:mm:ss,而且我有另一个字段包含一个表示小时数的整数。有没有办法轻松地将整数添加到日期时间字段,以便我们得到我们所期望的时钟数学结果。有没有办法在猪身上添加日期时间?
示例:日期为2013-06-01:23:12:12。
然后,添加2小时
我应该得到2013年6月2日1时12分12秒。
我想在猪身上做的事情在sql中非常常见。 我有日期字段的形式为yyy-mm-dd hh:mm:ss,而且我有另一个字段包含一个表示小时数的整数。有没有办法轻松地将整数添加到日期时间字段,以便我们得到我们所期望的时钟数学结果。有没有办法在猪身上添加日期时间?
示例:日期为2013-06-01:23:12:12。
然后,添加2小时
我应该得到2013年6月2日1时12分12秒。
随着猪(0.11.0)的最新版本,它应该是可能的。但小时数(时间)应按照ISO8601 Duration Format
。它提供了类AddDuration
,它允许我们添加一个DateTime对象和一个Duration对象。你可以在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)
你知不知道这是否正常工作,如果我需要添加负几小时呢? –
我正在编辑我的答案,因为我不能写,我想写的,在这里。请看看它。 – Tariq
谢谢,这正是我需要的! –