> I don't think that aligning with JPOX's JDOQL extensions is a goal of the > spec. :)
We can always try :) I'm happy with any expression, date(), currentDate(), Date.getDate(), JDOHelper.getDate(), etc. Quoting Matthew Adams <[EMAIL PROTECTED]>: > Hi Erik, > > I don't think that aligning with JPOX's JDOQL extensions is a goal of the > spec. :) > > While Date has methods like getDay(), getMonth(), etc., and Date's getDate() > method returns the day of the month between 1 & 31 (and is deprecated in > favor of Calendar.get(Calendar.DAY_OF_MONTH)). > > The only native syntax in Java to do this is "new Date()", but we know that > might have problems with JDOQL's constructor syntax. This is why I > recommended the standalone function currentDate(), similar to avg, count, > etc. > > To align with upper and lower casing conventions, I guess I would recommend > "date()" and "DATE()" to avoid the camel casing. > > --matthew > > >-----Original Message----- > >From: Erik Bengtson [mailto:[EMAIL PROTECTED] > >Sent: Friday, October 20, 2006 11:42 AM > >To: jdo-dev@db.apache.org > >Cc: [EMAIL PROTECTED] > >Subject: Re: Feature proposal for JDO 2.1 maintenance: current DB time > > > >Hi, > > > >I like the currentDate() and dislike adding methods to the PM. > >Methods unrelated > >to management of PCs lying in PM does not sound good to me, > >but currentDate in > >particular fits very well in JDOQL. > > > >JPOX has several additional JDOQL functions. Similar to > >currentDate(), we have > >Date.getDay(), Date.getMonth(), etc... > >http://www.jpox.org/docs/1_1/query_jdoql_methods.html > > > >I would propose Date.getDate() which aligns to JPOX JDOQL methods. :) > > > >Regards, > > > >Quoting Michael Bouschen <[EMAIL PROTECTED]>: > > > >> Hi, > >> > >> another alternative is making it a keyword, so something like > >> CURRENTDATE or CURRENT_DATE w/o parenthesis. > >> > >> I agree with leaving the resolution of the return value unresolved. > >> > >> Regards Michael > >> > As we discussed on the Fri conf call today, I think that a > >cleaner solution > >> is to introduce a new function "currentDate()" to JDOQL for > >this, similar to > >> JDOQL's count/sum/min/max/avg. Further, I would prefer to > >leave unspecified > >> the resolution of the return value for this (second, tenth of second, > >> millisecond, etc). > >> > > >> > As for the Bin Sun's proposal to add a method to the API > >for this purpose, > >> I think that it's interesting. I would prefer that it be placed on > >> PersistenceManager with the signature "Date > >getCurrentDate()". It could be > >> specified that if the underlying datastore cannot support > >this functionality, > >> the implementation will return null. I considered > >specifying that the > >> implementation should return "new Date()" in the event the > >datastore didn't > >> support it, but I think returning null is more informative > >to the caller. It > >> clearly indicates that the caller just can't know the answer to that > >> question, and the JVM's current datetime may be different > >enough from the > >> underlying database's datetime that using that value may be > >unreliable. The > >> question of the datetime's resolution remains for this method. > >> > > >> > --matthew > >> > > >> > > >> >> -----Original Message----- > >> >> From: Bin Sun [mailto:[EMAIL PROTECTED] > >> >> Sent: Friday, October 20, 2006 1:59 AM > >> >> To: Michael Bouschen; jdo-dev@db.apache.org > >> >> Cc: Jörg" von Frantzius; JDO Expert Group > >> >> Subject: Re: Feature proposal for JDO 2.1 maintenance: > >current DB time > >> >> > >> >> Hi, all! > >> >> > >> >> I think to least impact the current API, we'd > >> >> better simply add a method to PMF or PM: > >> >> public Date getNow(); > >> >> > >> >> Then we can use this Date as a parameter in any > >> >> Query. > >> >> > >> >> --- Michael Bouschen <[EMAIL PROTECTED]> wrote: > >> >> > >> >> > >> >>> Hi, > >> >>> > >> >>> I see one issue with using the syntax "new Date()": > >> >>> it might conflict > >> >>> with the constructor expression used in the result > >> >>> expression, because > >> >>> both use the keyword "new". A constructor expression > >> >>> is only supported > >> >>> in the query result expression; it is used to wrap > >> >>> values into a result > >> >>> class element and it is evaluated on the client. The > >> >>> expression "new > >> >>> Date()" should be supported in the result and the > >> >>> filter, it does not > >> >>> wrap any other values and it is evaluated on the > >> >>> database back end. > >> >>> How about using a different syntax for the current > >> >>> database date, e.g. > >> >>> JDOHelper.CURRENT_DATE() ? > >> >>> > >> >>> The other interesting issue with the example from > >> >>> Jörg is that it does > >> >>> not define a candidate class. I think this was on > >> >>> purpose, because the > >> >>> query should not access any tables in the database, > >> >>> but just return the > >> >>> current date. Maybe we could use the JDOHelper as > >> >>> the candidate class in > >> >>> this case? This would be something similar to the > >> >>> DUAL table in oracle. > >> >>> > >> >>> Regards Michael > >> >>> > >> >>>> Your 1st requirement is to retrieve the date on > >> >>>> > >> >>> the client. A 2nd requirement > >> >>> > >> >>>> would be comparisons over database server date. > >> >>>> > >> >>>> I have one sample for the 2nd requirement > >> >>>> > >> >>>> Query query = newQuery("select from Person where > >> >>>> > >> >>> startDate > new Date()"); > >> >>> > >> >>>> Quoting Jörg von Frantzius > >> >>>> > >> >>> <[EMAIL PROTECTED]>: > >> >>> > >> >>>> > >> >>>> > >> >>>>> Hi Craig, > >> >>>>> > >> >>>>> I'm not so sure whether this is really what you > >> >>>>> > >> >>> want to see, but here's > >> >>> > >> >>>>> something: > >> >>>>> > >> >>>>> Query query = newQuery("new Date()"); > >> >>>>> > >> >>>>> > >> >>> query.setResultClass(java.sql.Timestamp.class); > >> >>> > >> >>>>> query.setUnique(true); > >> >>>>> Date result = (Date)timeQuery.execute(); > >> >>>>> > >> >>>>> > >> >>>>> That result Date can then be used to e.g. set an > >> >>>>> > >> >>> updated object's > >> >>> > >> >>>>> lastModification timestamp before committing it. > >> >>>>> > >> >>>>> Regards, > >> >>>>> Jörg > >> >>>>> > >> >>>>> Craig L Russell schrieb: > >> >>>>> > >> >>>>> > >> >>>>>> Hi Jörg, > >> >>>>>> > >> >>>>>> Sorry to exercise you more on this, but I'm > >> >>>>>> > >> >>> still having a bit of > >> >>> > >> >>>>>> difficulty seeing how to use this feature. > >> >>>>>> > >> >>>>>> Could you please give us an example of the use > >> >>>>>> > >> >>> case you describe > >> >>> > >> >>>>>> below? I'd like to see the JDOQL query that uses > >> >>>>>> > >> >>> new Date() in action. > >> >>> > >> >>>>>> Thanks! > >> >>>>>> > >> >>>>>> Craig > >> >>>>>> > >> >>>>>> On Oct 19, 2006, at 1:33 AM, Jörg von Frantzius > >> >>>>>> > >> >>> wrote: > >> >>> > >> >>>>>> > >> >>>>>> > >> >>>>>>> Hello Craig, > >> >>>>>>> > >> >>>>>>> as far as I can see that does satisfy our > >> >>>>>>> > >> >>> requirements. Once we are > >> >>> > >> >>>>>>> able to query for that date in JDOQL, we can > >> >>>>>>> > >> >>> use it e.g. for > >> >>> > >> >>>>>>> lastmodification timestamps and the like. > >> >>>>>>> > >> >>>>>>> Regards, > >> >>>>>>> Jörg > >> >>>>>>> > >> >>>>>>> Craig L Russell schrieb: > >> >>>>>>> > >> >>>>>>> > >> >>>>>>>> It's easy enough to define "new Date()" as > >> >>>>>>>> > >> >>> being evaluated on the > >> >>> > >> >>>>>>>> back end for queries that are executed on the > >> >>>>>>>> > >> >>> back end. And being > >> >>> > >> >>>>>>>> evaluated in the vm for queries that have a > >> >>>>>>>> > >> >>> bound candidateCollection. > >> >>> > >> >>>>>>>> But does this satisfy the requirements? Once > >> >>>>>>>> > >> >>> you have a Date in > >> >>> > >> >>>>>>>> JDOQL, what can you do with it? > >> >>>>>>>> > >> >>>>>>>> Craig > >> >>>>>>>> > >> >>>>>>>> On Oct 16, 2006, at 11:58 AM, Erik Bengtson > >> >>>>>>>> > >> >>> wrote: > >> >>> > >> >>>>>>>> > >> >>>>>>>> > >> >>>>>>>>> +1. maybe "new Date()" could be the > >> >>>>>>>>> > >> >>> expression where evaluation > >> >>> > >> >>>>>>>>> occurs on the > >> >>>>>>>>> database. > >> >>>>>>>>> > >> >>>>>>>>> Quoting Jörg von Frantzius > >> >>>>>>>>> > >> >>> <[EMAIL PROTECTED]>: > >> >>> > >> >>>>>>>>> > >> >>>>>>>>> > >> >>>>>>>>>> Dear experts, > >> >>>>>>>>>> > >> >>>>>>>>>> there had been several occasions where in > >> >>>>>>>>>> > >> >>> our applications we had to > >> >>> > >> >>>>>>>>>> determine the database server's current > >> >>>>>>>>>> > >> >>> time(-stamp). In one > >> >>> > >> >>>>>>>>>> application > >> >>>>>>>>>> we needed it to synchronize sent JMS > >> >>>>>>>>>> > >> >>> messages with visibility of > >> >>> > >> >>>>>>>>>> commits > >> >>>>>>>>>> in the database, and in another we need it > >> >>>>>>>>>> > >> >>> for our simple replication > >> >>> > >> >>>>>>>>>> algorithm. > >> >>>>>>>>>> > >> >>>>>>>>>> In distributed systems in general it is > >> >>>>>>>>>> > >> >>> often crucial for > >> >>> > >> >>>>>>>>>> synchronization purposes to have a common > >> >>>>>>>>>> > >> >>> source of time information > >> >>> > >> >>>>>>>>>> that is accessible from all processes. > >> >>>>>>>>>> > >> >>>>>>>>>> It would be great if JDO2 could offer a way > >> >>>>>>>>>> > >> >>> of doing that > >> >>> > >> >>>>>>>>>> independently > >> >>>>>>>>>> of the database, e.g. as a JDOQL function. > >> >>>>>>>>>> > >> >>>>>>>>>> > >> >>>>>>>>>> Regards, > >> >>>>>>>>>> Jörg > >> >>>>>>>>>> > >> >>>>>>>>>> > >> >>>>>>>>>> > >> >>>>>>>>> > >> >>>>>>>>> > >> >>>>>>>> Craig Russell > >> >>>>>>>> Architect, Sun Java Enterprise System > >> >>>>>>>> > >> >>> http://java.sun.com/products/jdo > >> >>> > >> >>>>>>>> 408 276-5638 mailto:[EMAIL PROTECTED] > >> >>>>>>>> P.S. A good JDO? O, Gasp! > >> >>>>>>>> > >> >>>>>>>> > >> >>>>>>>> > >> >>>>>> Craig Russell > >> >>>>>> Architect, Sun Java Enterprise System > >> >>>>>> > >> >>> http://java.sun.com/products/jdo > >> >>> > >> >>>>>> 408 276-5638 mailto:[EMAIL PROTECTED] > >> >>>>>> P.S. A good JDO? O, Gasp! > >> >>>>>> > >> >>>>>> > >> >>>>>> > >> >>>>> > >> >>>>> > >> >>>> > >> >>>> > >> >>> -- > >> >>> Michael Bouschen [EMAIL PROTECTED] Engineering GmbH > >> >>> mailto:[EMAIL PROTECTED] http://www.tech.spree.de/ > >> >>> Tel.:++49/30/235 520-33 Buelowstr. 66 > >> >>> Fax.:++49/30/2175 2012 D-10783 Berlin > >> >>> > >> >>> > >> >>> > >> >> __________________________________________________ > >> >> Do You Yahoo!? > >> >> Tired of spam? Yahoo! Mail has the best spam protection around > >> >> http://mail.yahoo.com > >> >> > >> >> > >> > >> > >> -- > >> Michael Bouschen [EMAIL PROTECTED] Engineering GmbH > >> mailto:[EMAIL PROTECTED] http://www.tech.spree.de/ > >> Tel.:++49/30/235 520-33 Buelowstr. 66 > >> Fax.:++49/30/2175 2012 D-10783 Berlin > >> > >> > > > > > > > > >