Re: Text->Date conversion in a WHERE clause

From: cadiolis(at)gmail(dot)com
To: pgsql-sql(at)postgresql(dot)org
Subject: Re: Text->Date conversion in a WHERE clause
Date: 2005-10-12 21:37:56
Message-ID: 1129153075.962155.131260@g43g2000cwa.googlegroups.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

As an example:

CREATE TABLE userdata (
userdata_id serial NOT NULL,
user_id smallint,
data text
);

CREATE TABLE users (
user_id serial NOT NULL,
name text,
"type" smallint
);

INSERT INTO userdata (userdata_id, user_id, data) VALUES (1, 1,
'2005-01-01');
INSERT INTO userdata (userdata_id, user_id, data) VALUES (2, 2,
'2005-10-10');
INSERT INTO userdata (userdata_id, user_id, data) VALUES (3, 3,
'052-44-5863');
INSERT INTO userdata (userdata_id, user_id, data) VALUES (4, 4,
'052-44-5863');

INSERT INTO users (user_id, name, "type") VALUES (1, 'Jim', 1);
INSERT INTO users (user_id, name, "type") VALUES (2, 'John', 1);
INSERT INTO users (user_id, name, "type") VALUES (3, 'Bob', 2);
INSERT INTO users (user_id, name, "type") VALUES (4, 'Bill', 2);

Then run the query:
SELECT *
FROM
(
SELECT u.user_id, ud.data
FROM users u, userdata ud
WHERE u.user_id = ud.user_id
AND u.type = 1
) subusers
WHERE subusers.data::text::date < now();

Returns the message: ERROR: date/time field value out of range:
"052-44-5863"

So my question is how does this query ever even SEE the row containing
"052-44-5863"? The sub-query doesn't return that row so I don't see
how it can get this error.

Regards,
Collin Peters

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Greg Stark 2005-10-12 21:54:33 Re: pg, mysql comparison with "group by" clause
Previous Message Michael Fuhr 2005-10-12 21:03:37 Re: regular expression