使用时区调整时间戳

Adjusting a timestamp with a timezone

我使用的是 postgres,我有一个没有时区的时间戳和“-2”形式的时区偏移量。我将如何将偏移量应用于时区?我知道 date - interval '2 hours' 之类的东西适用于固定偏移量,但我一直无法弄清楚如何使用另一列中的变量来做到这一点。

像这样的东西应该对你有用:

CASE WHEN offset_var > 0 THEN timestamp_no_tz + (offset_var || ' hour')::INTERVAL 
WHEN offset_var < 0 THEN timestamp_no_tz - (abs(offset_var) || ' hour')::INTERVAL 
ELSE timestamp_no_tz END