We're working on a web-based application running JSF on a JBoss server. It deals with a lot of dates which are being problematic.
In the Java beans the dates are handled as Date objects and are being stored in a database. Whenever a Date is stored in the database it is changed to -2 days from what it was in Java. (I.E. If the Date object in the bean is May 8, 2012 the Date in the database will be May 6, 2012; if the Java Date is Jan 1, 2010 the database date is Dec 30, 2009).
When the Dates are retrieved from the database they remain off by 2 days. Obviously there is a conflict between how Java and SQL handle date objects and we would like to find a good fix for it.
Here are a couple work-arounds we are considering should a "proper" solution not exist:
- Add 2 days to each Java date before calling the stored procedure
- Convert the Java date to a string before storing it and have SQL convert the string to a date
Has anyone encountered this before or could explain why it is doing this, and if so is there a correct solution for it?