Thread: to_date/to timestamp going to BC
Can someone tell me if this is a bug with the date functions or am I using them incorrectly? If anyone has a workaround for this I could use some help this data conversion. dev=> create table test_date (dt varchar(100)); CREATE dev=> insert into test_date values ('March 11, 1997'); INSERT 706020 1 dev=> select dt, to_date(dt, 'Month dd, yyyy'), to_timestamp(dt, 'Month dd, yyyy') from test_date; dt | to_date | to_timestamp ----------------+---------------+---------------March 11, 1997 | 0001-03-19 BC | 0001-03-19 BC drw_dev=> select version(); version ----------------------------------------------------------------PostgreSQL 7.1 on sparc-sun-solaris2.6, compiled by GCC 2.95.2 (1 row)
jason.servetar@ccgenesis.com writes: > Can someone tell me if this is a bug with the date functions or am I using > them incorrectly? I get the right thing when I use the right format: regression=# select dt, to_timestamp(dt, 'FMMonth dd, yyyy') from test_date; dt | to_timestamp ----------------+------------------------March 11, 1997 | 1997-03-11 00:00:00-05 (1 row) However, I'd agree that this shows a lack of robustness in to_timestamp; it's not objecting to data that doesn't match the format. regards, tom lane
Thanks Tom that worked great. I guess I should have not skipped the FM prefix section of the date conversion doc. drw_dev-> to_timestamp(dt, 'FMMonth dd, yyyy') from test_date; dt | to_date | to_timestamp ----------------+------------+------------------------March 11, 1997 | 1997-03-11 | 1997-03-11 00:00:00-07 -----Original Message----- From: Tom Lane [mailto:tgl@sss.pgh.pa.us] Sent: Wednesday, October 03, 2001 3:14 PM To: Servetar, Jason Cc: pgsql-sql@postgresql.org Subject: Re: [SQL] to_date/to timestamp going to BC jason.servetar@ccgenesis.com writes: > Can someone tell me if this is a bug with the date functions or am I using > them incorrectly? I get the right thing when I use the right format: regression=# select dt, to_timestamp(dt, 'FMMonth dd, yyyy') from test_date; dt | to_timestamp ----------------+------------------------March 11, 1997 | 1997-03-11 00:00:00-05 (1 row) However, I'd agree that this shows a lack of robustness in to_timestamp; it's not objecting to data that doesn't match the format. regards, tom lane
On Wed, Oct 03, 2001 at 05:14:02PM -0400, Tom Lane wrote: > jason.servetar@ccgenesis.com writes: > > Can someone tell me if this is a bug with the date functions or am I using > > them incorrectly? > > I get the right thing when I use the right format: > > regression=# select dt, to_timestamp(dt, 'FMMonth dd, yyyy') from test_date; > dt | to_timestamp > ----------------+------------------------ > March 11, 1997 | 1997-03-11 00:00:00-05 > (1 row) > > However, I'd agree that this shows a lack of robustness in to_timestamp; > it's not objecting to data that doesn't match the format. The manual is transparent about this. I can add feauture that will check everythig, but users who knows read manual and use already debugged queries will spend CPU on non-wanted code. Hmm.. I look at Oracle, and it allows parse queries like: SVRMGR> select to_date('March 11, 1997', 'Month dd, yyyy') from dual; TO_DATE(' --------- 11-MAR-97 1 row selected. .. well, I add it to my TODO for 7.3 (I plan rewrite several things in to_* functions). Karel -- Karel Zak <zakkr@zf.jcu.cz>http://home.zf.jcu.cz/~zakkr/C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz
Karel, > .. well, I add it to my TODO for 7.3 (I plan rewrite several things > in to_* functions). How about a to_char function for INTERVAL? Please, oh please? -Josh ______AGLIO DATABASE SOLUTIONS___________________________ Josh Berkus Complete information technology josh@agliodbs.com and data management solutions (415) 565-7293 for law firms, small businesses fax 621-2533 and non-profit organizations. San Francisco
Attachment
On Thu, Oct 04, 2001 at 07:44:14AM -0700, Josh Berkus wrote: > Karel, > > > .. well, I add it to my TODO for 7.3 (I plan rewrite several things > > in to_* functions). > > How about a to_char function for INTERVAL? Please, oh please? oh, needn't please.. already in right now breeding 7.2 :-) test=# SELECT to_char('5months 3sec 4h 1min'::interval, 'HH:MI:SS Mon'); to_char --------------04:01:03 May (1 row) Karel -- Karel Zak <zakkr@zf.jcu.cz>http://home.zf.jcu.cz/~zakkr/C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz
Thanks Karel,Good call, you guessed it. I was just using my Oracle knowledge of the to_date and applying it to the results I was expecting in pgsql. Guess I should not make those assumptions.... -----Original Message----- From: Karel Zak [mailto:zakkr@zf.jcu.cz] Sent: Thursday, October 04, 2001 2:42 AM To: Tom Lane Cc: Servetar, Jason; pgsql-sql@postgresql.org Subject: Re: [SQL] to_date/to timestamp going to BC On Wed, Oct 03, 2001 at 05:14:02PM -0400, Tom Lane wrote: > jason.servetar@ccgenesis.com writes: > > Can someone tell me if this is a bug with the date functions or am I using > > them incorrectly? > > I get the right thing when I use the right format: > > regression=# select dt, to_timestamp(dt, 'FMMonth dd, yyyy') from test_date; > dt | to_timestamp > ----------------+------------------------ > March 11, 1997 | 1997-03-11 00:00:00-05 > (1 row) > > However, I'd agree that this shows a lack of robustness in to_timestamp; > it's not objecting to data that doesn't match the format. The manual is transparent about this. I can add feauture that will check everythig, but users who knows read manual and use already debugged queries will spend CPU on non-wanted code. Hmm.. I look at Oracle, and it allows parse queries like: SVRMGR> select to_date('March 11, 1997', 'Month dd, yyyy') from dual; TO_DATE(' --------- 11-MAR-97 1 row selected. .. well, I add it to my TODO for 7.3 (I plan rewrite several things in to_* functions). Karel -- Karel Zak <zakkr@zf.jcu.cz>http://home.zf.jcu.cz/~zakkr/C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz