One way  would be to do dateOfBirth.time < nnnnnn
Where nnnnn is (new Date(-1900, 1,1)).getTime()

By the way be very very wary of Date objects coming back from the database and 
check what the actual implementation class type is (and not the variable type). 
Even though java.sql.Timestamp extends java.util.Date they don’t mix.
From the Javadocs

Note: This type is a composite of a java.util.Date and a separate nanoseconds 
value. Only integral seconds are stored in the java.util.Date component. The 
fractional seconds - the nanos - are separate. TheTimestamp.equals(Object) 
method never returns true when passed an object that isn't an instance of 
java.sql.Timestamp, because the nanos component of a date is unknown. As a 
result, theTimestamp.equals(Object) method is not symmetric with respect to the 
java.util.Date.equals(Object) method. Also, the hashcode method uses the 
underlying java.util.Date implementation and therefore does not include nanos 
in its computation.

Due to the differences between the Timestamp class and the java.util.Date class 
mentioned above, it is recommended that code not view Timestamp values 
generically as an instance of java.util.Date. The inheritance relationship 
between Timestamp and java.util.Date really denotes implementation inheritance, 
and not type inheritance.
We had great fun tracking down issues in our rules caused by this – our fields 
were Date classes, but when fetched back from the database the instance type 
would be Timestamp.  The rules worked fine in unit tests and first execution 
(as they were all new objects the type was java.util.Date) but not on 
subsequent executions when they were returned from the DB!

Thomas

From: [email protected] 
[mailto:[email protected]] On Behalf Of Nancy Henggeler
Sent: 09 February 2012 17:24
To: Rules Users List
Subject: Re: [rules-users] Low Date question in drools

It is a java date.  We use some java binding objects to build it.  Below is 
just a sampling of this.  The second entry below indicates what to name it in 
Java, it's java type, what DB2 table (cogentTable) and data field it is coming 
from (cogentField).  The snippets below might not help much.


1) bindHistory((ECDField) object.getElement("dateOfBirth"), 
this.getDateOfBirthHistory());

2)                <attribute name="dateOfBirth">
                        <type>Date</type>
                        <cogenTable>W1V0</cogenTable>
                        <cogenField>BIRTH-DATE</cogenField>
                        <description>Date Of Birth</description>
                </attribute>



From:        Wolfgang Laun 
<[email protected]<mailto:[email protected]>>
To:        Rules Users List 
<[email protected]<mailto:[email protected]>>
Date:        02/09/2012 11:00 AM
Subject:        Re: [rules-users] Low Date question in drools
Sent by:        
[email protected]<mailto:[email protected]>
________________________________



So what is the Java type of dateOfBirth, please?
-W

2012/2/9 Nancy Henggeler 
<[email protected]<mailto:[email protected]>>
Hello Laun,

Thank you for your quick response.  This date is a date coming from a DB2 date 
field and is valid in my incoming data.  Frankly, I am with you, why not null 
versus a silly low date as such, arggggh.  But since it is coming in as such do 
you know of a work around?

Thank so much,
Nancy



From:        Wolfgang Laun 
<[email protected]<mailto:[email protected]>>
To:        Rules Users List 
<[email protected]<mailto:[email protected]>>
Date:        02/09/2012 10:31 AM
Subject:        Re: [rules-users] Low Date question in drools
Sent by:        
[email protected]<mailto:[email protected]>
________________________________



Why would you want to test for January 1st in year 1? This is not a
value an object of type java.util.Date can represent. See that type's
javadoc for details, but the epoch begins January 1, 1970.

-W


On 9 February 2012 17:19, Nancy Henggeler 
<[email protected]<mailto:[email protected]>> 
wrote:
I have a simple rule where I want to bypass elements that have a low date but
drools seems to be interpreting the date different then I am expecting.
Drools statement and error follows:

ClientSupplement ( dateOfBirth : dateOfBirth != null && != 0001-01-01)

throws error -- Error: [Error: badly formatted number: For input string:
"001-01-01"] [Near : {... 0001-01-01 ....}] ^ [Line: 1, Column: 1]

How do I get drools to  understand this low date?  I have tried single,
double, and no quotes around the low date and all result in a similiar error
message.  Please Help!

--
View this message in context: 
http://drools.46999.n3.nabble.com/Low-Date-question-in-drools-tp3729940p3729940.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
_______________________________________________
rules-users mailing list
[email protected]<mailto:[email protected]>
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
[email protected]<mailto:[email protected]>
https://lists.jboss.org/mailman/listinfo/rules-users
The information contained in this message may be privileged and confidential 
and protected from disclosure. If you are
not the intended recipient of this message, you are hereby notified that any 
dissemination, distribution, or copying of this
communication is strictly prohibited. If you have received this communication 
in error, please notify us immediately by
replying to the message, and please delete it from your computer.



_______________________________________________
rules-users mailing list
[email protected]<mailto:[email protected]>
https://lists.jboss.org/mailman/listinfo/rules-users

_______________________________________________
rules-users mailing list
[email protected]<mailto:[email protected]>
https://lists.jboss.org/mailman/listinfo/rules-users

The information contained in this message may be privileged and confidential 
and protected from disclosure. If you are

not the intended recipient of this message, you are hereby notified that any 
dissemination, distribution, or copying of this

communication is strictly prohibited. If you have received this communication 
in error, please notify us immediately by

replying to the message, and please delete it from your computer.



________________________________

**************************************************************************************
This message is confidential and intended only for the addressee. If you have 
received this message in error, please immediately notify the 
[email protected] and delete it from your system as well as any copies. The 
content of e-mails as well as traffic data may be monitored by NDS for 
employment and security purposes. To protect the environment please do not 
print this e-mail unless necessary.

NDS Limited. Registered Office: One London Road, Staines, Middlesex, TW18 4EX, 
United Kingdom. A company registered in England and Wales. Registered no. 
3080780. VAT no. GB 603 8808 40-00
**************************************************************************************
_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to