在銀行業務中經常會出各種報表,特別是在年終決算時各種報表多如牛毛,有的要求提取一年或者所有日期的數據,這時候就要求提取時間,格式如下:
20100102
……
20101231
以前我們出報表,這樣的時間序列是通過檢索數據庫獲取的,代碼如下:
i=0 while (($i < $j)) do ((i=i+1)) isql cmbc <<+ unload to trdt_ dt.tmp select date ('$1')+$i from gddta; + awk -F "|" '{print $1}' trdt_dt.tmp >> trdt_dt done
表gddta中只有一條記錄,select不操作標準字段,實現日期的遞增。這樣會頻繁的操縱數據庫,雖然性能上沒有太大影響。現在採用純shell來實現。
#注意: 該函數經嚴格測試只能用於LINUX環境的ksh腳本中. #function: GetIncDate {IDate} {IDays}; return ODate GetIncDate() { L_TRADE_DAY=$1 days=$2 L_TODAY=$(printf "%(%Y%m%d)T\n" "${L_TRADE_DAY}0000 + ${days} day") print ${L_TODAY} } i=0 while((i < 559)) do ((i=i+1)) GetIncDate 20081231 $i >>tempdate_file