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();
}