1

タイムゾーンオフセット+1、-7、+5などを含むテーブルがあります。日時を含むログ情報を含む別の結合可能なテーブルがあります。

たとえば、INTERVAL '1 hours'、INTERVAL'-7 hours'などを使用して、オフセットが追加された2番目のテーブルから日時を選択したいと思います。

私の擬似コードは次のようになります。

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=?

これは機能しませんが、PostgreSQL8.3で機能させる方法がわかりません。

何か案は?

4

2 に答える 2

2

INTERVALに数値を掛けることができることがわかりました。したがって、「1時間」の間隔を作成し、それに格納されたオフセットを掛けると、それは機能し、次のようになります。

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=?

et voila!

于 2012-09-04T07:38:13.047 に答える
2

連結も使用できるので、機能し(l.inserted || ' hours')::INTERVALます。

于 2012-09-04T07:42:32.517 に答える