Timestamps in Gnucash Mysql
Phil Longstaff
plongstaff at rogers.com
Wed Aug 12 08:44:20 EDT 2009
On August 12, 2009 08:25:31 am Phil Longstaff wrote:
> On August 12, 2009 03:06:40 am marcus.wolschon at googlemail.com wrote:
> > I just found out that gnucash stores
> > DatePosted and DateEntered as Strings
> > instead of the proper DateTime or Timestamp
> > sql data-types.
> >
> > Why is that? In XML it already uses a proper
> > date-format.
> >
> > This makes is very hard to sort by date in
> > SQL-queries and to select a range as you need
> > a complex fulltext-index instead of a trivial
> > integer index. (There are supposed to be MANY
> > transactions and splits in there.)
>
> That goes back to the time when the sql backend couldn't support different
> SQL/DDL code for the different db engines. There is no SQL standard for a
> date/time that all 3 db's (sqlite3/mysql/pgsql) share.
>
> Now that the sql backend can support different column types for the 3 dbs,
> it does make sense to use the proper types.
Also, sqlite does not have a datetime or timestamp but needs to use strings,
and I've been coding mainly for sqlite, with mysql and pgsql taking 2nd place.
Gnucash has both dates, and date-times. For dates, I can use CHAR(8) for
sqlite, DATE for mysql and pgsql. For date-times, I can use CHAR(14) for
sqlite, TIMESTAMP for mysql and TIMESTAMP for pgsql. Question: should the
pgsql be "TIMESTAMP WITH TIME ZONE" or "TIMESTAMP WITHOUT TIME ZONE"?
Phil
More information about the gnucash-devel
mailing list