Thread: how can i convert a substring to a date?

how can i convert a substring to a date?

From
"joe.guyot"
Date:
greetings all!

i have a  string data from a view that is a packed field. it
contains a date, a time and a user's initials. i'm trying to extract
the date portion in a pg 7 view. the data originally came from a ms
sql 7 table that has since been converted into a pg 7 table.

in the ms sql 7 view the date was extracted  as follows:
   convert(timestamp, substring(creat, 1, 8), 120) = 'createdate'

where creat is the packed field from the original table and
'createdate' is the extracted date portion. the data would typically
look like: 200111171623XYX. the result is '2001-11-17'.

i've reviewed documentation, on line books and several threads in
this and related newsgroups and can't seem to come up with a  decent
solution.

i've tried various combinations of this in a pg 7 view:
   to_date(substr(creat,1,8),'YYYY-MM-DD') = 'createdate'   to_date(substring(creat from 1 for 8),'YYYY-MM-DD') =
'createdate'   to_timestamp(substr(creat,1,8),'YYYY-MM-DD') = 'createdate'   to_timestamp(substrsting(creat from 1 for
8),'YYYY-MM-DD')=
 
'createdate'

and continually get different errors:   "bad date external representation 'createdate'"
or   "bad timestamp external representation 'createdate'"

i'm sure this has an obvious solution but i can't seem to find it.
any suggestions are appreciated.


regards,
yusuf

__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com


Re: how can i convert a substring to a date?

From
"Ross J. Reedstrom"
Date:
On Thu, Jan 30, 2003 at 11:03:43PM -0800, joe.guyot wrote:
> greetings all!
> 
> 
> and continually get different errors:
>     "bad date external representation 'createdate'"
> or
>     "bad timestamp external representation 'createdate'"
> 
> i'm sure this has an obvious solution but i can't seem to find it.
> any suggestions are appreciated.

Hmm, the parse is telling you it doesn't know how to express the string
'createdate' as a date or timestamp. Why is that? Because you've 
asked it to. I presume the fragments you quote above are part of a 
CREATE VIEW statement. You're asking forthe boolean result of comparing
the substring expression to the string 'createdate'. What you probably
want is:

to_date(substr(creat,1,8),'YYYYMMDD') AS 'createdate'

Here's an example of use:

test=# CREATE VIEW quux AS SELECT to_date(substr(creat,1,8),'YYYYMMDD') AS "createdate", substr(creat,13) AS "User"
FROMbaz;
 
CREATE VIEW
test=# select * from baz;     creat
-----------------200111171623XYX
(1 row)
test=# select * from quux ;createdate | User
------------+------2001-11-17 | XYX
(1 row)
Ross