1.查询条件查询当月的数据,数据库是db2,然后网上找了很多,发现很复杂,我们的db2并不支持 LAST_DAY 之类的函数,最后实在是觉得太麻烦,索性用java处理,发现相当简单。
2.在此总结当sql太复杂很难实现或者影响开发效率的时候,能用java处理就用java处理。
3.java获取当月的第一天
/**
* 取得指定日期的所处月份的第一天
*
* @param date
* 指定日期。
* @return 指定日期的所处月份的第一天
*/
public static synchronized java.util.Date getFirstDayOfMonth(java.util.Date date)
{
/**
* 详细设计: 1.设置为1号
*/
GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
gc.setTime(date);
gc.set(Calendar.DAY_OF_MONTH, 1);
return gc.getTime();
}
4.java获取当月的最后一天
/**
* 取得指定日期的所处月份的最后一天
*
* @param date
* 指定日期。
* @return 指定日期的所处月份的最后一天
*/
public static synchronized java.util.Date getLastDayOfMonth(java.util.Date date)
{
/**
* 详细设计:
* 1.如果date在1月,则为31日
* 2.如果date在2月,则为28日
* 3.如果date在3月,则为31日
* 4.如果date在4月,则为30日
* 5.如果date在5月,则为31日
* 6.如果date在6月,则为30日
* 7.如果date在7月,则为31日
* 8.如果date在8月,则为31日
* 9.如果date在9月,则为30日
* 10.如果date在10月,则为31日
* 11.如果date在11月,则为30日
* 12.如果date在12月,则为31日
* 1.如果date在闰年的2月,则为29日
*/
GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
gc.setTime(date);
switch (gc.get(Calendar.MONTH))
{
case 0:
gc.set(Calendar.DAY_OF_MONTH, 31);
break;
case 1:
gc.set(Calendar.DAY_OF_MONTH, 28);
break;
case 2:
gc.set(Calendar.DAY_OF_MONTH, 31);
break;
case 3:
gc.set(Calendar.DAY_OF_MONTH, 30);
break;
case 4:
gc.set(Calendar.DAY_OF_MONTH, 31);
break;
case 5:
gc.set(Calendar.DAY_OF_MONTH, 30);
break;
case 6:
gc.set(Calendar.DAY_OF_MONTH, 31);
break;
case 7:
gc.set(Calendar.DAY_OF_MONTH, 31);
break;
case 8:
gc.set(Calendar.DAY_OF_MONTH, 30);
break;
case 9:
gc.set(Calendar.DAY_OF_MONTH, 31);
break;
case 10:
gc.set(Calendar.DAY_OF_MONTH, 30);
break;
case 11:
gc.set(Calendar.DAY_OF_MONTH, 31);
break;
}
//检查闰年
if ((gc.get(Calendar.MONTH) == Calendar.FEBRUARY) && (isLeapYear(gc.get(Calendar.YEAR))))
{
gc.set(Calendar.DAY_OF_MONTH, 29);
}
return gc.getTime();
}