1

我有一个包含时区偏移量、+1、-7、+5 等的表。我还有另一个可连接的表,其中包含包括日期时间在内的日志信息。

我想从第二个表中选择日期时间,并使用例如 INTERVAL '1 hours'、INTERVAL '-7 hours' 等添加偏移量。

我的伪代码将类似于:

SELECT l.status, l.inserted + INTERVAL (coalesce(timezone_offset, '0')||' hours' )  AS inserted FROM log l
LEFT OUTER JOIN users u on u.usersid = l.usersid
LEFT OUTER JOIN companies c on c.companiesid = u.companiesid 
WHERE l.usersid=?

这不起作用,但我不知道如何使它在 PostgreSQL 8.3 中工作。

有任何想法吗?

4

2 回答 2

2

事实证明,您可以将 INTERVAL 乘以一个数字。因此,如果我创建一个“1 小时”的 INTERVAL 并将其乘以存储的偏移量,这将起作用,产生:

SELECT l.status, l.inserted + (INTERVAL '1 hours' *  coalesce(timezone_offset, '0')) FROM log as l
LEFT OUTER JOIN users u on u.usersid = l.usersid
LEFT OUTER JOIN companies c on c.companiesid = u.companiesid 
WHERE l.usersid=?

瞧!

于 2012-09-04T07:38:13.047 回答
2

您也可以使用串联,因此(l.inserted || ' hours')::INTERVAL也可以使用。

于 2012-09-04T07:42:32.517 回答