From: | "Harry Hehl" <Harry(dot)Hehl(at)diskstream(dot)com> |
---|---|
To: | <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Timestamp with timezone query |
Date: | 2006-09-26 17:21:01 |
Message-ID: | 6AD4F3A63B017C4FB074E2C895AD185488CB73@EXCHSRV.waterloonetworking.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Not having any luck with this.
TIME WITH TIME ZONE columns are being handle slightly different for
TIMESTAMP WITH TIME ZONE.
If I have the following data...
mydate | mytime
------------------------------------------------------------------------
--------
2006-09-26 12:12:08-04 | 12:12:08-04
I tried a different method to query timestamps with a timezone. The
following returns a row.
select mytime from table where mydate = timestamp with time zone
'2006-09-26 16:12:08+00'
If I do the samething with the time column, I do not get anything back.
select mytime from table where mytime = mytime with time zone
'16:12:08+00';
The purpose of the 'mytime' column was to do searchs on only the time
portion of a timestamp.
Is it maybe possible to search on a timestamp but wildcare the date
part?
As I mentioned, I am getting timestamp and time from a client that is
converted to utc.
Therefore is it possible to build a query like :
Select * from table where mydate = timestamp with time zone '%
16:12:08+00' i.e. wildcard the date portion?
________________________________
From: Brandon Aiken [mailto:BAiken(at)winemantech(dot)com]
Sent: Tuesday, September 26, 2006 12:47 AM
To: Harry Hehl; pgsql-general(at)postgresql(dot)org
Subject: RE: [GENERAL] Timestamp with timezone query
I'm not at my dev station to check, but what about:
SELECT myTime AT TIME ZONE 'UTC' FROM theTable;
Then try:
SELECT myTime AT TIME ZONE 'UTC' FROM theTable WHERE myTime =
'19:30:00-00';
Or:
SELECT myTime AT TIME ZONE 'UTC' FROM theTable WHERE myTime = TIME WITH
TIME ZONE '19:30:00-00';
If that doesn't work you might try extracting epoch to convert the time
to an integer:
SELECT myDate, myTime FROM theTable where EXTRACT(EPOCH FROM myTime) =
EXTRACT(EPOCH FROM TIME WITH TIME ZONE '19:30:00-00');
Brandon Aiken
-----Original Message-----
From: Harry Hehl [mailto:Harry(dot)Hehl(at)diskstream(dot)com]
Sent: Mon 9/25/2006 9:21 PM
To: Brandon Aiken
Subject: RE: [GENERAL] Timestamp with timezone query
Hi Brandon,
>>postgres=# select time with time zone '00:30:00-05' at time zone
'utc';
This is not quite when I am doing. The time I get is already in UTC.
This is what I have...
date | timestamp(6) with time zone |
time | time(6) with time zone |
select date,time from test where date = '2000-02-10 19:30:00' at time
zone 'utc';
date | time
------------------------+-------------
2000-02-11 00:30:00-05 | 00:30:00-05
I get date and time from a remote client in UTC. In the above case
(which works) '2000-02-10 19:30:00' is UTC, so the query returns the
desired result. I have to do the same thing with time.
So I tried...
select date,time from test where time = '19:30:00' at time zone 'utc';
ERROR: invalid input syntax for type timestamp with time zone:
"19:30:00"
select date,time from test where time = time with time zone '19:30:00'
at time zone 'utc';
select date,time from test where time = time with time zone
'19:30:00-00' at time zone 'utc';
Both return...
date | time
------+------
(0 rows)
This get close (I think)
select cast( ('2000-01-01 19:30:00' at time zone 'utc') as time );
timezone
----------
00:30:00
but when used in a table query...
select date,time from test where time = cast( ('2000-01-01 19:30:00' at
time zone 'utc') as time );
date | time
------+------
(0 rows)
Any ideas would be much appreciated.
Thanks
Harry
-----Original Message-----
From: Brandon Aiken [mailto:BAiken(at)winemantech(dot)com]
Sent: Mon 9/25/2006 5:42 PM
To: Harry Hehl
Subject: RE: [GENERAL] Timestamp with timezone query
Hm? Works for me:
postgres=# select time with time zone '00:30:00-05' at time zone 'utc';
timezone
-------------
05:30:00+00
(1 row)
What are you trying to do with the query?
--
Brandon Aiken
CS/IT Systems Engineer
-----Original Message-----
From: pgsql-general-owner(at)postgresql(dot)org
[mailto:pgsql-general-owner(at)postgresql(dot)org] On Behalf Of Harry Hehl
Sent: Monday, September 25, 2006 5:34 PM
To: pgsql-general(at)postgresql(dot)org
Subject: Re: [GENERAL] Timestamp with timezone query
Thanks, that does it.
select * from table where column = '2006-02-10 19:30:00' AT TIME ZONE
'utc';
I also have a TIME WITH TIMEZONE column that I have to do the same thing
with but AT TIME ZONE can't be used directly. I tried several approaches
but I either get incorrect results or syntax errors. Is there a way to
do the same thing with TIME columns?
-----Original Message-----
From: Brandon Aiken [mailto:BAiken(at)winemantech(dot)com]
Sent: Monday, September 25, 2006 11:39 AM
To: Harry Hehl; pgsql-general(at)postgresql(dot)org
Subject: RE: [GENERAL] Timestamp with timezone query
Use the AT TIME ZONE construct:
http://www.postgresql.org/docs/8.1/interactive/functions-datetime.html#F
UNCTIONS-DATETIME-ZONECONVERT
--
Brandon Aiken
CS/IT Systems Engineer
-----Original Message-----
From: pgsql-general-owner(at)postgresql(dot)org
[mailto:pgsql-general-owner(at)postgresql(dot)org] On Behalf Of Harry Hehl
Sent: Monday, September 25, 2006 11:06 AM
To: pgsql-general(at)postgresql(dot)org
Subject: [GENERAL] Timestamp with timezone query
Hello,
I have a table with TIMESTAMP WITH TIMEZONE column. I would like to
query for a timestamp using a different timezone.
For example if a column contains '2006-02-11 00:30:00-05'
select * from table where column='2006-02-10 19:30:00+00' would return
the column containing '2006-02-11 00:30:00-05'.
From section 8.5.1.3 "To ensure that a literal is treated as timestamp
with time zone, give it the correct explicit type: TIMESTAMP WITH TIME
ZONE '2004-10-19 10:23:54+02'"
So I tried:
select * from table where column = TIMESTAMP WITH TIME ZONE '2006-02-10
19:30:00+00'
But it did not returned the desired result.
I am getting the timestamp as UTC and want to use to build a query, but
I don't want Postgres convert the timestamp. Is there anyway to do this?
Thanks
---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend
---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster
From | Date | Subject | |
---|---|---|---|
Next Message | MaXX | 2006-09-26 18:35:03 | Re: Restart after poweroutage |
Previous Message | Phillip Tornroth | 2006-09-26 17:10:23 | Solution for rolling back many transactions? |