Thread: Select question
Hi all, although not new to databases, I'm new to the wonderful world of PostGreSQl and SQL in general. Question: I do this query phone=# select * from phonelog where cdate > 2001-05-18 order by cdate limit 2 ; And I get theis result cdate | ctime | countrycode | success | carrier | duration | phonenumber | areacode | pseq ------------+-------+-------------+---------+---------+----------+---------- ---+----------+------2001-04-01 | 0 | 370 | 1 | 1 | 8 | "3703348" | "33" | 40052001-04-01 | 0 | 98 | 1 | 1 | 15 | "9871162" | "71" | 3889 Although I specified that I want only dates > 5/18/2001, I get dates 4/1/2001. Clearly, I ask the system the wrong question. How do I ask this question the correct way? Best regards, Chris _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com
I'm not sure, but... Does it work if you say cdate > '2001-05-18' ? (Possibly ::date too) I'd guess your date value you're trying to put there is getting treated as an integer expression. On Wed, 23 May 2001, Chris Ruprecht wrote: > Hi all, > > although not new to databases, I'm new to the wonderful world of PostGreSQl > and SQL in general. > Question: > > I do this query > phone=# select * from phonelog where cdate > 2001-05-18 order by cdate limit > 2 ; > > And I get theis result > > cdate | ctime | countrycode | success | carrier | duration | > phonenumber | areacode | pseq > ------------+-------+-------------+---------+---------+----------+---------- > ---+----------+------ > 2001-04-01 | 0 | 370 | 1 | 1 | 8 | "3703348" > | "33" | 4005 > 2001-04-01 | 0 | 98 | 1 | 1 | 15 | "9871162" > | "71" | 3889 > > > Although I specified that I want only dates > 5/18/2001, I get dates > 4/1/2001. Clearly, I ask the system the wrong question. How do I ask this > question the correct way?
"Chris Ruprecht" <chrup999@yahoo.com> writes: > phone=# select * from phonelog where cdate > 2001-05-18 order by cdate limit > 2 ; Try select * from phonelog where cdate > '2001-05-18' order by cdate limit 2 I think it's interpreting your query as where cdate > 1978 (result of integer subexpression) and then doing some weird integer-to-date conversion. In general, any constant of a non-numeric datatype needs to be quoted in SQL queries. regards, tom lane