Thread: now() + '4d' AT TIME ZONE issue

now() + '4d' AT TIME ZONE issue

From
Madison Kelly
Date:
Hi all,

   I'm trying to select an offset timestamp at a given time zone, but I
can't seem to get the syntax right.

What I am *trying* to do, which doesn't work:

SELECT
    now() AT TIME ZONE 'America/Toronto',
    now() + '4d' AS future AT TIME ZONE 'America/Toronto';

Which generates the error:
ERROR:  syntax error at or near "AT"
LINE 1: ...ME ZONE 'America/Toronto', now() + '4d' AS future AT TIME ZO...

I've tried using an embedded SELECT and CASTing it as a TIMESTAMP with
no luck.

SELECT
    now() AT TIME ZONE 'America/Toronto',
    CAST ((SELECT now() + '4d') AS TIMESTAMP) as future AT TIME ZONE
'America/Toronto';
ERROR:  syntax error at or near "AT"
LINE 1: ...ST ((SELECT now() + '4d') AS TIMESTAMP) as future AT TIME ZO...

When I remove the 'AT TIME ZONE' from the offset now in either case the
SELECT works.

Someone mind beating me with a clue stick? Thanks!

Madi

Re: now() + '4d' AT TIME ZONE issue

From
"Chris Spotts"
Date:
Try moving your "as future"
SELECT
    now() AT TIME ZONE 'America/Toronto',
    CAST ((SELECT now() + '4d') AS TIMESTAMP) AT TIME ZONE 'America/Toronto' as future;

> -----Original Message-----
> From: pgsql-general-owner@postgresql.org [mailto:pgsql-general-
> owner@postgresql.org] On Behalf Of Madison Kelly
> Sent: Wednesday, July 08, 2009 1:33 PM
> To: postgres list
> Subject: [GENERAL] now() + '4d' AT TIME ZONE issue
>
> Hi all,
>
>    I'm trying to select an offset timestamp at a given time zone, but I
> can't seem to get the syntax right.
>
> What I am *trying* to do, which doesn't work:
>
> SELECT
>     now() AT TIME ZONE 'America/Toronto',
>     now() + '4d' AS future AT TIME ZONE 'America/Toronto';
>
> Which generates the error:
> ERROR:  syntax error at or near "AT"
> LINE 1: ...ME ZONE 'America/Toronto', now() + '4d' AS future AT TIME
> ZO...
>
> I've tried using an embedded SELECT and CASTing it as a TIMESTAMP with
> no luck.
>
> SELECT
>     now() AT TIME ZONE 'America/Toronto',
>     CAST ((SELECT now() + '4d') AS TIMESTAMP) as future AT TIME ZONE
> 'America/Toronto';
> ERROR:  syntax error at or near "AT"
> LINE 1: ...ST ((SELECT now() + '4d') AS TIMESTAMP) as future AT TIME
> ZO...
>
> When I remove the 'AT TIME ZONE' from the offset now in either case the
> SELECT works.
>
> Someone mind beating me with a clue stick? Thanks!
>
> Madi
>
> --
> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general


Re: now() + '4d' AT TIME ZONE issue

From
Tom Lane
Date:
Madison Kelly <linux@alteeve.com> writes:
> SELECT
>     now() AT TIME ZONE 'America/Toronto',
>     now() + '4d' AS future AT TIME ZONE 'America/Toronto';

You've got "AS future" in the wrong place.

            regards, tom lane

Re: now() + '4d' AT TIME ZONE issue

From
Madison Kelly
Date:
Tom Lane wrote:
> Madison Kelly <linux@alteeve.com> writes:
>> SELECT
>>     now() AT TIME ZONE 'America/Toronto',
>>     now() + '4d' AS future AT TIME ZONE 'America/Toronto';
>
> You've got "AS future" in the wrong place.
>
>             regards, tom lane
>

Thank you both, Chris and Tom. That was indeed my oops.

Madi