Oh, oh I got it! In mysql/dbmysql.c and pgsql/pgsql.c we define variable(s): MySQL: const char *TO_DATE = "DATE_FORMAT(%s, \"%%Y-%%m-%%d %%H:%%m:%%s\")"; const char *TO_DATE = "DATE_FORMAT(%s, \"%%Y-%%m-%%d %%H:%%m:%%s\")"; PostgreSQL: const char *TO_DATE = "TO_DATE(%s, \"YYYY-MM-DD HH:MI:SS\" )"; const char *TO_CHAR = "TO_CHAR(%s, \"YYYY-MM-DD HH:MI:SS\" )";
Then, in db.c, we call it as an extern and use it in queries. Just one problem: I don't remember if *printf() will do substitution within the substitutions. We'd rely on having one %s argument in the TO_DATE and TO_CHAR variables so that we can insert the current date or the column name. If printf() won't do that, then we'd have to use header files to define a static string "macro" and stringify it into the queries. Aaron Ilja Booij <[EMAIL PROTECTED]> said: > Hi, > > I was thinking of the best way to solve this problem. > > Clearly, in the end, we should not be dependent on the format in which > the database stores the DATE-format. This calls for a solution like the > one that Aaron pointed out (although I'd rather just use to_char()..) > > For now, I think we should keep the change simple. If PostgreSQL offers > a DATETIME WITHOUT TIME ZONE, I think we should use that, and rely on > the output from it. > > In the end, we should keep the DATETIME WITHOUT TIME ZONE, but use the > right functions to get output from the database we can depend on. > > Any thoughts on this? > > Ilja > > Ilja Booij wrote: > > > Hi, > > > > I agree that we should use some kind of scheme to get a fixed format > > from the database. I wonder why to_char() and to_date() are not in > > MySQL. They are part of SQL92, aren't they? > > > > Is it possible to include the database functions, from the URL Aaron > > provided, in an installation script? If so, we could use this. > > > > Ilja > > > > Aaron Stone wrote: > > > >> Using explicit ANSI SQL functions should give us better portability to > >> whatever default format the database wants to use. I think it's quite > >> bad form > >> that we're currently assuming that the database will store and return the > >> format that we want simply because we remembered to use the right > >> column type. > >> > >> SELECT to_char(datecolumn, 'YYYY-MM-DD HH24:MI:SS') FROM whatevertable; > >> > >> UPDATE whatevertable SET datecolumn = to_date('1999-02-01 > >> 00:00:00','YYYY-MM-DD HH24:MI:SS'); > >> > >> In MySQL, to_date and to_char do not exist. date_format is used > >> instead. At > >> the moment, we implement lots of queries (all of them, perhaps) in the > >> midlevel and so it would probably be a pain to push the date stuff > >> down into > >> the database specific lowlevel. So as an alternative, we could use MySQL > >> specific date functions in the midlevel and then use a series of stored > >> functions to emulate the MySQL stuff in PostgreSQL and elsewhere. See > >> here: > >> > >> http://www.xach.com/aolserver/mysql-functions.sql > >> > >> Aaron > >> > >> > >> ""Matthew T. O'Connor"" <matthew@zeut.net> said: > >> > >> > >>> Paul F. De La Cruz wrote: > >>> > >>> > >>>> On Tue, Feb 24, 2004 at 09:16:59PM -0000, Aaron Stone wrote: > >>>> > >>>> > >>>> > >>>>> As long as this doesn't cause pre-7.1 version of PostgreSQL to > >>>>> choke, the > >>>>> change should definitely be made before 2.0rc3! > >>>>> > >>>> > >>>> > >>>> I think it would make the pre-7.1 versions of PostgreSQL choke as they > >> > >> > >> either only have timestamp (without the additional 'with/without time > >> zone' or > >> use some other strange format. I'm thinking that this may be a problem > >> that's > >> been around for awhile and just wasn't noticed since PostgreSQL seems > >> to give > >> dates different from what date_sql2imap is looking for. I'm no PostgreSQL > >> expert though so if someone knows otherwise concerning older PG > >> versions, then > >> by all means speak up. > >> > >>>> > >>>> > >>> > >>> I don't see a big problem dropping support for pre-7.1. 7.0.x is > >>> very old. Anyone who is actually interested in running dbmail would > >>> want a newer postgresql. Also, the number of users still on > >>> postgresql that old is very small, see this little survey from the > >>> postgresql website: > >>> > >>> http://www.postgresql.org/survey.php?View=1&SurveyID=14 > >>> > >>> I'm not exactly sure what date that survey was taken, but based on > >>> the 7.4 DEV that is listed I would assume it is at least before 7.4 > >>> was released which was back in November. > >>> > >>> _______________________________________________ > >>> Dbmail-dev mailing list > >>> Dbmail-dev@dbmail.org > >>> http://twister.fastxs.net/mailman/listinfo/dbmail-dev > >>> > >> > >> > >> > >> > > _______________________________________________ > > Dbmail-dev mailing list > > Dbmail-dev@dbmail.org > > http://twister.fastxs.net/mailman/listinfo/dbmail-dev > _______________________________________________ > Dbmail-dev mailing list > Dbmail-dev@dbmail.org > http://twister.fastxs.net/mailman/listinfo/dbmail-dev > --