| From: | Dan Harris <fbsd(at)drivefaster(dot)net> |
|---|---|
| To: | pgsql-admin(at)postgresql(dot)org |
| Subject: | Re: Function to offset current timestamp |
| Date: | 2007-06-01 18:51:54 |
| Message-ID: | 46606ACA.1090708@drivefaster.net |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-admin |
Steve Crawford wrote:
> Dan Harris wrote:
>> I'm trying to write a function that can do a select on an integer value
>> from a table and subtract that value from current_timestamp.
>>
>> Let's say I have a table called users and a field called tz_offset..
>>
>> I want my function to do something like :
>>
>> select current_timestamp - '( select tz_offset from users where userid =
>> ? ) hours'::interval
>>
>> Obviously this syntax is incorrect, but I'm not quite sure how to do the
>> subquery and make the integer result of it part of the quoted interval
>> expression.
>>
>> Any tips?
>
>
> You don't need to make it part of the quoted expression - just multiply
> an interval by your integer. Using your version, try something like:
>
> select current_timestamp - '1 hour'::interval * ( select tz_offset from
> users where userid = ? )
>
> But this is actually wrong because the returned time is still in your
> current timezone - just offset by X hours.
Thanks for the extra explanation here. I think I'll be OK because the timezone
offset comes directly from the browser. I grab it via javascript and as long as
their system timezone offset is set correctly, the dates will be displayed
relative to them. I do understand that I will have to do more work if I want to
display their dates to other users in different timezones correctly.
-Dan
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Simon Riggs | 2007-06-01 20:02:19 | Re: Attempt to re-archive existing WAL logs afterrestoringfrom backup |
| Previous Message | Steve Crawford | 2007-06-01 18:24:45 | Re: Function to offset current timestamp |