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
> >
> >
> >
> >
> >
> >
> 

Reply via email to