EMPIREDB-349
improve DateUtils
diff --git a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
index 6e375e2..544468c 100644
--- a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
+++ b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
@@ -132,16 +132,16 @@
             
             // Insert History as batch
             DBSQLScript batch = new DBSQLScript();
-            insertEmpDepHistory(batch, idEmp1,  idDevDep,  DateUtils.getDate(2007, 11,  1));            
-            insertEmpDepHistory(batch, idEmp1,  idProdDep, DateUtils.getDate(2008,  8,  1));           
-            insertEmpDepHistory(batch, idEmp1,  idSalDep,  DateUtils.getDate(2009,  4, 15));           
+            insertEmpDepHistory(batch, idEmp1,  idDevDep,  DateUtils.getDate(2007, 12,  1));            
+            insertEmpDepHistory(batch, idEmp1,  idProdDep, DateUtils.getDate(2008,  9,  1));           
+            insertEmpDepHistory(batch, idEmp1,  idSalDep,  DateUtils.getDate(2009,  5, 15));           
 
-            insertEmpDepHistory(batch, idEmp2,  idSalDep,  DateUtils.getDate(2006,  2,  1));            
-            insertEmpDepHistory(batch, idEmp2,  idDevDep,  DateUtils.getDate(2008, 10, 15));
+            insertEmpDepHistory(batch, idEmp2,  idSalDep,  DateUtils.getDate(2006,  3,  1));            
+            insertEmpDepHistory(batch, idEmp2,  idDevDep,  DateUtils.getDate(2008, 11, 15));
             
-            insertEmpDepHistory(batch, idEmp3,  idDevDep,  DateUtils.getDate(2006,  8, 15));            
-            insertEmpDepHistory(batch, idEmp3,  idSalDep,  DateUtils.getDate(2007,  7,  1));           
-            insertEmpDepHistory(batch, idEmp3,  idProdDep, DateUtils.getDate(2008,  6, 15));
+            insertEmpDepHistory(batch, idEmp3,  idDevDep,  DateUtils.getDate(2006,  9, 15));            
+            insertEmpDepHistory(batch, idEmp3,  idSalDep,  DateUtils.getDate(2007,  6,  1));           
+            insertEmpDepHistory(batch, idEmp3,  idProdDep, DateUtils.getDate(2008,  7, 31));
             batch.executeBatch(db.getDriver(), conn);
             
             // commit
diff --git a/empire-db/src/main/java/org/apache/empire/commons/DateUtils.java b/empire-db/src/main/java/org/apache/empire/commons/DateUtils.java
index b528073..913cfcf 100644
--- a/empire-db/src/main/java/org/apache/empire/commons/DateUtils.java
+++ b/empire-db/src/main/java/org/apache/empire/commons/DateUtils.java
@@ -36,6 +36,8 @@
 {
     private static final Logger log = LoggerFactory.getLogger(DateUtils.class);
     
+    public static final long MILLIS_IN_DAY = 86400000;
+    
     private DateUtils()
     {
         // Static Function only
@@ -94,8 +96,8 @@
             calendar.setTime(date);
         if (year>0)
             calendar.set(Calendar.YEAR, year);
-        if (month>=0)
-            calendar.set(Calendar.MONTH, month);
+        if (month>0)
+            calendar.set(Calendar.MONTH, month-1);
         if (day>0)
             calendar.set(Calendar.DAY_OF_MONTH, day);
         return calendar.getTime();
@@ -106,8 +108,8 @@
         Calendar calendar = Calendar.getInstance();
         if (year>0)
             calendar.set(Calendar.YEAR, year);
-        if (month>=0)
-            calendar.set(Calendar.MONTH, month);
+        if (month>0)
+            calendar.set(Calendar.MONTH, month-1);
         if (day>0)
             calendar.set(Calendar.DAY_OF_MONTH, day);
         // No Time
@@ -133,6 +135,20 @@
     {
         return setTime(date, 0, 0, 0, 0);
     }
+
+    public static long compareDates(Date date1, Date date2)
+    {
+        long time1 = setTime(date1, 0, 0, 0, 0).getTime();
+        long time2 = setTime(date2, 0, 0, 0, 0).getTime();
+        time1 = time1 / MILLIS_IN_DAY;
+        time2 = time2 / MILLIS_IN_DAY;
+        return time1-time2;
+    }
+    
+    public static boolean compareEqual(Date date1, Date date2)
+    {
+        return (compareDates(date1, date2)==0);
+    }
     
     // ------- parsing functions -----
 
diff --git a/empire-db/src/test/java/org/apache/empire/commons/DateUtilsTest.java b/empire-db/src/test/java/org/apache/empire/commons/DateUtilsTest.java
index 36b781e..88963e2 100644
--- a/empire-db/src/test/java/org/apache/empire/commons/DateUtilsTest.java
+++ b/empire-db/src/test/java/org/apache/empire/commons/DateUtilsTest.java
@@ -90,7 +90,7 @@
 	{
 		Calendar now = Calendar.getInstance();
 		Date date = now.getTime();
-		Date pastDate = DateUtils.setDate(date, 1952, 11, 21);
+		Date pastDate = DateUtils.setDate(date, 1952, 12, 21);
 		Calendar past = Calendar.getInstance();
 		past.setTime(pastDate);
 		assertEquals(1952, past.get(Calendar.YEAR));
@@ -108,12 +108,12 @@
 	@Test
 	public void testGetDate()
 	{
-		Date date = DateUtils.getDate(1, 2, 3);
+		Date date = DateUtils.getDate(2000, 12, 31);
 		Calendar cal = Calendar.getInstance();
 		cal.setTime(date);
-		assertEquals(1, cal.get(Calendar.YEAR));
-		assertEquals(2, cal.get(Calendar.MONTH));
-		assertEquals(3, cal.get(Calendar.DAY_OF_MONTH));
+		assertEquals(2000, cal.get(Calendar.YEAR));
+		assertEquals(11, cal.get(Calendar.MONTH));
+		assertEquals(31, cal.get(Calendar.DAY_OF_MONTH));
 		assertEquals(0, cal.get(Calendar.HOUR_OF_DAY));
 		assertEquals(0, cal.get(Calendar.MINUTE));
 		assertEquals(0, cal.get(Calendar.SECOND));