Shell獲取時間列表

在銀行業務中經常會出各種報表,特別是在年終決算時各種報表多如牛毛,有的要求提取一年或者所有日期的數據,這時候就要求提取時間,格式如下:

20100101

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
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章