需要注意的地方: 
(1)业务点要提前列出来,这样可防止遗漏;     
(2)关键业务点一定要反复确定,最好能做个测试demo出来,在没有完成之前,Everything is possible;     
(3)有陌生的技术点或业务点时,不要随便承诺完成时间;     
技术上容易忽视的地方:     
oracle如果有时间比较最好要使用to_char或to_date转化为同样的格式。如果db中存的是Date格式,java中的是String格式,     
可使用这种转换格式:     
to_date(to_char(org_time,’yyyy-MM-dd’),’yyyy-MM-dd’)=to_date(‘+变量+’,’yyyy-MM-dd’)     
需要提的一点是,变量两边的单引号是必需的;     
    
msg=msg.replace("%","");     
/**    
*     
* @param date     
* @return "yyyy-MM-dd"     
*/     
public static String getPreMonthDayDate(Date date){     
    
    Calendar calendar=Calendar.getInstance();     
    logger.debug("raw:"+formatToString(date, "yyyy-MM-dd"));     
    calendar.setTime(date);     
    calendar.add(Calendar.DATE,-1);     
    calendar.add(Calendar.MONTH, -1);     
    String result=formatToString(calendar.getTime(), "yyyy-MM-dd");     
    logger.debug("OutPut:"+result);     
    return result;     
}     if (con==null||con.isClosed()) {    
    con=getConnection(database_user2, database_password2);     
}     
con.setAutoCommit(false);     
con=getConnection(database_user2, database_password2);     
ps=con.prepareStatement(insertSql);     
for (int i = 0; i < receiverArr.length; i++) {     
    ps.setString(1, receiverArr[i]);     
    ps.setString(2, msg);     
    ps.addBatch();     
}     
ps.executeBatch();     
con.commit();  
java中 long t = System.currentTimeMillis(); 
System.out.println(t/60/60/24/365/1000);这个的答案就正确,
而System.out.println(t/(60*60*24*365*1000));输出就错误. 
(long i1 = 60*60*24*365;   
  System.out.println(t/(i1*1000)); )这两句合起来也正确.
为什么,怎么想都想不通 .求高手解答.谢谢了...主要问题只有一个:   
  默认书写数字的方式下,数值是 int 型;    
那么连续做乘法,是会溢出的    
所以:    
  t/(60*60*24*365*1000)    
应修改为(加个L):    
  t/(60L*60*24*365*1000)    










