TIMESTAMP comparison problem - Mailing list pgsql-sql

From Stuart Brooks
Subject TIMESTAMP comparison problem
Date
Msg-id 4795A3B0.3010505@cat.co.za
Whole thread Raw
Responses Re: TIMESTAMP comparison problem  (Michael Glaesemann <grzm@seespotcode.net>)
List pgsql-sql
I have a problem in comparing a TIMESTAMP field with a timestamp 
literal. I presume it is to do with the floating point representation of 
the timestamp but I was wondering if there is an easy work around 
without having to recompile postgres to use integer datetimes.

Basically if I issue a "SELECT * FROM T WHERE tstamp>'xxxxx';" I get 
xxxxx as my first field.
If I reduce the precision to 3 for the timestamps it appears to work 
although it makes me nervous.

I am running postgresql 8.2.5 on NetBSD 3.

Should I just recompile to use integer datetimes? I would like to have 
at least microsecond precision.

ThanksStuart






Table definition:
------------------------------------------------

db=> \d+ Transactions;
Table "test.transactions"   Column      |              Type              |                               Modifiers
                          transaction_key | bigint                         | not null default
nextval('transactions_transaction_key_seq'::regclass)|
 
time            | timestamp(6) without time zone | not null

Indexes:   "transactions_pkey" PRIMARY KEY, btree (transaction_key)   "transactions_time_index" btree ("time",
transaction_key)
Has OIDs: no


Table contents:
------------------------------------------------

db=> select transaction_key,time from Transactions;transaction_key |            time
-----------------+----------------------------              1 | 2008-01-22 09:33:34.681693              2 | 2008-01-22
09:33:34.98421             3 | 2008-01-22 09:33:36.270745              4 | 2008-01-22 09:33:38.573363              5 |
2008-01-2209:33:38.496988              6 | 2008-01-22 09:33:39.995707              7 | 2008-01-22 09:33:40.111784
      8 | 2008-01-22 09:33:41.415505              9 | 2008-01-22 09:33:42.328298             10 | 2008-01-22
09:33:42.025126            11 | 2008-01-22 09:33:44.802205             12 | 2008-01-22 09:33:45.257675             13 |
2008-01-2209:33:46.746349             14 | 2008-01-22 09:33:46.513937             15 | 2008-01-22 09:33:46.735079
     16 | 2008-01-22 09:33:47.528806             17 | 2008-01-22 09:33:49.20255             18 | 2008-01-22
09:33:51.724916            19 | 2008-01-22 09:33:52.550102             20 | 2008-01-22 09:33:54.698312
 
(20 rows)


Query with problem:
------------------------------------------------

metadb=> select transaction_key,time from Transactions where time>'2008-01-22 09:33:46.746349';transaction_key |
   time
 
-----------------+----------------------------             13 | 2008-01-22 09:33:46.746349 *** THIS SHOULDN'T BE HERE
****            16 | 2008-01-22 09:33:47.528806             17 | 2008-01-22 09:33:49.20255             18 | 2008-01-22
09:33:51.724916            19 | 2008-01-22 09:33:52.550102             20 | 2008-01-22 09:33:54.698312
 
(6 rows)









pgsql-sql by date:

Previous
From: sad
Date:
Subject: Re: currval() within one statement
Next
From: Guillaume Lelarge
Date:
Subject: Re: currval() within one statement