Isn’t there a version of .exp that takes args? You can pass a date object directly there without worrying about formatting.
On Sat, Jan 2, 2021 at 7:49 AM Andrea Biasillo <a...@dataloy.com> wrote: > Hi Mike! > > > > I have tried with: > > > > Expression expDate = ExpressionFactory.exp("modifiedDate> > TO_DATE('2003-07-17','yyyy-mm-dd')"); > > > > but I get this exception: > > > > Caused by: org.apache.cayenne.exp.ExpressionException: [v.4.2.M1 Nov 26 > 2020 09:20:26] Encountered " "(" "( "" at line 1, column 22. > > Was expecting one of: > > <EOF> > > "or" ... > > "and" ... > > "|" ... > > "^" ... > > "&" ... > > "<<" ... > > ">>" ... > > "+" ... > > "-" ... > > "/" ... > > "*" ... > > > > and I really would want to have all my expression in one string, without > use greaterExp. > > Like this: > > > > Expression exp = ExpressionFactory.exp("businessPartnerName='andrea' and > businessPartnerCode!='rossi' or ((businessPartnerCode!='bianchi' and > maxAdvancePaymentPercent>9) or businessPartnerCode!='pippo' or > (maxAdvancePaymentPercent>100 or maxAdvancePaymentPercent<10)) and > modifiedDate> TO_DATE('2003-07-17','yyyy-mm-dd')"); > > > > But maybe it is not possible. > > > > Andrea > > > > On 2021/01/02 12:45:49, Mike Kienenberger <mkien...@gmail.com> wrote: > > > Oracle expects SQL like the following to compare dates. > > > > > > MODIFIED_DATE > TO_DATE('2003-07-17','yyyy-mm-dd') > > > > > > You either need to use that in your exp() method, or use greaterExp(), > > > which can automatically generate the needed sql for the current database. > > > > > > Date date = new GregorianCalendar(2003, Calendar.JULY, > > > 17).getTime() ; > > > Expression matchDateGreaterThanDate1 = > > > ExpressionFactory.greaterExp("MODIFIED_DATE", date); > > > > > > > > > > > > > > > On Sat, Jan 2, 2021 at 3:45 AM Andrea Biasillo <a...@dataloy.com> wrote: > > > > > > > Hi! > > > > > > > > Is it possible to use Date values in ExpressionFactory.exp? > > > > > > > > This works very well: > > > > > > > > Expression exp = ExpressionFactory.exp("businessPartnerName='andrea' > and > > > > businessPartnerCode!='rossi' or ((businessPartnerCode!='bianchi' and > > > > maxAdvancePaymentPercent>9) or businessPartnerCode!='pippo' or > > > > (maxAdvancePaymentPercent>100 or maxAdvancePaymentPercent<10))"); > > > > > > > > but if I use a Date value like this: > > > > > > > > Expression expDate = ExpressionFactory.exp("modifiedDate> > '2003-07-17'"); > > > > > > > > The database, Oracle in my case, will complain: > > > > > > > > Literal does not match format string > > > > (the database expects something like this: MODIFIED_DATE > DATE > > > > '2003-07-17') > > > > > > > > Any input? > > > > > > > > Andrea > > > > > > > > > > > > > > > > > > > > > > > > > > > > >