Postgres exhibits some strange behaviour when parsing time zone names, or I just don't understand how it works.

From the [documentation][1]:

>     SELECT TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-05' AT TIME ZONE 'MST';
    Result: 2001-02-16 18:38:40
> The example takes a time stamp specified in EST (UTC-5) and converts it to local time in MST (UTC-7).

This *seems* to imply that 'MST' is interchangeable with 'UTC-7' but the behaviour is opposite to what you'd expect.

    SELECT TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-05' AT TIME ZONE 'UTC-7';
    Result: 2001-02-17 08:38:40

Instead of using the time zone 'UTC-7' it's using 'UTC+7', which is 14 hours different.

Using ISO 8601 time zone notation also yields the opposite from the expected result:

    SELECT TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-05' AT TIME ZONE '-7';
    Result: 2001-02-17 08:38:40

    SELECT TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-05' AT TIME ZONE '-07';
    Result: 2001-02-17 08:38:40

    SELECT TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-05' AT TIME ZONE '-07:00';
    Result: 2001-02-17 08:38:40

The only ISO 8601 notation that threw an error was the `-0700` notation.

Other gibberish notations *are* accepted, even though they don't make any sense at all:

    SELECT TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-05' AT TIME ZONE '-7MST';
    Result: 2001-02-17 08:38:40

    SELECT TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-05' AT TIME ZONE 'MST-7';
    Result: 2001-02-17 08:38:40

    SELECT TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-05' AT TIME ZONE '-7+7';
    Result: 2001-02-17 08:38:40

Can someone help me understand how time zones, specifically offset notation works, or is supposed to work, in Postgres.

  [1]: http://www.postgresql.org/docs/9.5/static/functions-datetime.html#FUNCTIONS-DATETIME-ZONECONVERT