Обсуждение: Auto-formatting timestamps?
Hi all, I'm undergoing a port from an old Sybase database to Postgres. It's going surprisingly well, but I have a question regarding formatting of timestamps. In Sybase, we get: :> select date from checkoutdate; date 'May 1 2001 12:00AM' ... In Postgres: => select date from checkoutdate; date ---------------------2001-05-01 00:00:00 ... I can properly format it using to_char: => select to_char(date, 'Mon DD YYYY HH:MIAM') as date from checkoutdate; date ---------------------May 01 2001 12:00AM ... Short of creating a wrapper type for timestamp (which seems like overkill just for modifying the output function), is there a way to output the Sybase format automatically (i.e. without a call to to_char)? I've found some code that actually somewhat depends on this format, and one of my goals in this port is to change as little client code as possible. Is it possible to automatically change the output like this, preferably on a per-connection basis? I found stuff regarding the datestyle parameter in the docs, but that doesn't quite do what I'd like. Thanks much, Peter
Why not create a view?
On Tue, May 13, 2008 at 11:58 AM, Peter Koczan <pjkoczan@gmail.com> wrote:
Hi all,
I'm undergoing a port from an old Sybase database to Postgres. It's
going surprisingly well, but I have a question regarding formatting of
timestamps.
In Sybase, we get:
:> select date from checkoutdate;
date
'May 1 2001 12:00AM'
...
In Postgres:
=> select date from checkoutdate;
date
---------------------
2001-05-01 00:00:00
...
I can properly format it using to_char:
=> select to_char(date, 'Mon DD YYYY HH:MIAM') as date from checkoutdate;
date
---------------------
May 01 2001 12:00AM
...
Short of creating a wrapper type for timestamp (which seems like
overkill just for modifying the output function), is there a way to
output the Sybase format automatically (i.e. without a call to
to_char)?
I've found some code that actually somewhat depends on this format,
and one of my goals in this port is to change as little client code as
possible. Is it possible to automatically change the output like this,
preferably on a per-connection basis? I found stuff regarding the
datestyle parameter in the docs, but that doesn't quite do what I'd
like.
Thanks much,
Peter
--
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql
On Tue, May 13, 2008 at 5:54 PM, Mag Gam <magawake@gmail.com> wrote: > Why not create a view? That's a possibility, but the issue is that the output formatting is bound to a data type (timestamp), not one or two particular tables. Trying to create a view for all the tables with timestamps (and creating appropriate rules for updating views) would be a huge administrative PITA. > > Hi all, > > > > I'm undergoing a port from an old Sybase database to Postgres. It's > > going surprisingly well, but I have a question regarding formatting of > > timestamps. > > > > In Sybase, we get: > > :> select date from checkoutdate; > > date > > 'May 1 2001 12:00AM' > > ... > > > > In Postgres: > > => select date from checkoutdate; > > date > > --------------------- > > 2001-05-01 00:00:00 > > ... > > > > I can properly format it using to_char: > > => select to_char(date, 'Mon DD YYYY HH:MIAM') as date from checkoutdate; > > date > > --------------------- > > May 01 2001 12:00AM > > ... > > > > Short of creating a wrapper type for timestamp (which seems like > > overkill just for modifying the output function), is there a way to > > output the Sybase format automatically (i.e. without a call to > > to_char)? > > > > I've found some code that actually somewhat depends on this format, > > and one of my goals in this port is to change as little client code as > > possible. Is it possible to automatically change the output like this, > > preferably on a per-connection basis? I found stuff regarding the > > datestyle parameter in the docs, but that doesn't quite do what I'd > > like. > > > > Thanks much, > > Peter
Peter Koczan escribió: > On Tue, May 13, 2008 at 5:54 PM, Mag Gam <magawake@gmail.com> wrote: > > Why not create a view? > > That's a possibility, but the issue is that the output formatting is > bound to a data type (timestamp), not one or two particular tables. > Trying to create a view for all the tables with timestamps (and > creating appropriate rules for updating views) would be a huge > administrative PITA. If you're really set about that, you can add a new DateStyle setting. It's a bit of C hacking. (Or you can hire someone to do it for you.) -- Alvaro Herrera http://www.CommandPrompt.com/ PostgreSQL Replication, Consulting, Custom Development, 24x7 support
But why not make a view similar to, select * from checkoutdate do select * from checkoutdate_special_view
You don't have to do it for each table, you just do it for your source table, and use the view to manipulate stuff...
If you have many tables like that, you can create a view for each of them, sure its a lot of work, but its worth it....
HTH
You don't have to do it for each table, you just do it for your source table, and use the view to manipulate stuff...
If you have many tables like that, you can create a view for each of them, sure its a lot of work, but its worth it....
HTH
On Wed, May 14, 2008 at 11:46 AM, Peter Koczan <pjkoczan@gmail.com> wrote:
That's a possibility, but the issue is that the output formatting is
bound to a data type (timestamp), not one or two particular tables.
Trying to create a view for all the tables with timestamps (and
creating appropriate rules for updating views) would be a huge
administrative PITA.
> > Hi all,
> >
> > I'm undergoing a port from an old Sybase database to Postgres. It's
> > going surprisingly well, but I have a question regarding formatting of
> > timestamps.
> >
> > In Sybase, we get:
> > :> select date from checkoutdate;
> > date
> > 'May 1 2001 12:00AM'
> > ...
> >
> > In Postgres:
> > => select date from checkoutdate;
> > date
> > ---------------------
> > 2001-05-01 00:00:00
> > ...
> >
> > I can properly format it using to_char:
> > => select to_char(date, 'Mon DD YYYY HH:MIAM') as date from checkoutdate;
> > date
> > ---------------------
> > May 01 2001 12:00AM
> > ...
> >
> > Short of creating a wrapper type for timestamp (which seems like
> > overkill just for modifying the output function), is there a way to
> > output the Sybase format automatically (i.e. without a call to
> > to_char)?
> >
> > I've found some code that actually somewhat depends on this format,
> > and one of my goals in this port is to change as little client code as
> > possible. Is it possible to automatically change the output like this,
> > preferably on a per-connection basis? I found stuff regarding the
> > datestyle parameter in the docs, but that doesn't quite do what I'd
> > like.
> >
> > Thanks much,
> > Peter