Hi,
Thanks for the patch, however it is incomplete. You would need to add
addFunction("ADDDATE", ADDDATE, ...);
also DATE_DIFF is incomplete. Could you please provide a complete
test, and a few test cases? See also
http://www.h2database.com/html/build.html#providing_patches
Regards,
Thomas
On Fri, Sep 11, 2009 at 12:56 AM, Yonas <[email protected]> wrote:
>
> Hi,
>
> We have a bunch of SQL that we like to run on both mysql and h2.
> However we often need to check which database is being used when we
> call some of the date functions.
>
> For us, a change like the following seems to make the ADDDATE and
> DATEDIFF function mostly compatible with MySQL.
>
> If you wanted to integrate this into your tree, we would not need to
> keep our own tree..... The code below is conceptual only as it will
> not correctly dispatch to the two functions.
>
> If you like I could add the remaining code and make a full diff.
>
> The gist of our issue is that we need to be able to do both adddate
> and datediff on H2 and MySQL but the parameters are different.
>
> Y.
>
>
>
> Index: src/main/org/h2/expression/Function.java
> ===================================================================
> --- src/main/org/h2/expression/Function.java (revision 1817)
> +++ src/main/org/h2/expression/Function.java (working copy)
> @@ -89,7 +89,7 @@
> DAY_OF_MONTH = 105, DAY_OF_WEEK = 106, DAY_OF_YEAR = 107,
> HOUR = 108, MINUTE = 109, MONTH = 110, MONTH_NAME = 111,
> NOW = 112, QUARTER = 113, SECOND = 114, WEEK = 115, YEAR
> = 116, CURRENT_DATE = 117, CURRENT_TIME = 118,
> CURRENT_TIMESTAMP = 119, EXTRACT = 120, FORMATDATETIME =
> 121, PARSEDATETIME = 122,
> - ISO_YEAR = 123, ISO_WEEK = 124, ISO_DAY_OF_WEEK = 125;
> + ISO_YEAR = 123, ISO_WEEK = 124, ISO_DAY_OF_WEEK = 125,
> ADDDATE=126;
>
> public static final int DATABASE = 150, USER = 151, CURRENT_USER
> = 152, IDENTITY = 153, AUTOCOMMIT = 154,
> READONLY = 155, DATABASE_PATH = 156, LOCK_TIMEOUT = 157;
> @@ -1002,8 +1002,16 @@
> case DATE_ADD:
> result = ValueTimestamp.getNoCopy(dateadd(v0.getString(),
> v1.getInt(), v2.getTimestampNoCopy()));
> break;
> + case ADDDATE:
> + result = ValueTimestamp.getNoCopy(dateadd
> ("DAY", v1.getInt(), v2.getTimestampNoCopy()));
> + break;
> case DATE_DIFF:
> + if (args.length == 2) {
> + result = ValueLong.get(datediff("DAY",
> v1.getTimestampNoCopy(), v2.getTimestampNoCopy()));
> + } else {
> result = ValueLong.get(datediff(v0.getString(),
> v1.getTimestampNoCopy(), v2.getTimestampNoCopy()));
> + }
> +
> break;
> case EXTRACT: {
> int field = getDatePart(v0.getString());
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "H2
Database" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/h2-database?hl=en
-~----------~----~----~----~------~----~------~--~---