2013-06-25 42 views
0

我想在猪身上做的事情在sql中非常常见。 我有日期字段的形式为yyy-mm-dd hh:mm:ss,而且我有另一个字段包含一个表示小时数的整数。有没有办法轻松地将整数添加到日期时间字段,以便我们得到我们所期望的时钟数学结果。有没有办法在猪身上添加日期时间?

示例:日期为2013-06-01:23:12:12。

然后,添加2小时

我应该得到2013年6月2日1时12分12秒。

回答

6

随着猪(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) 
+0

你知不知道这是否正常工作,如果我需要添加负几小时呢? –

+0

我正在编辑我的答案,因为我不能写,我想写的,在这里。请看看它。 – Tariq

+0

谢谢,这正是我需要的! –

相关问题