在银行业务中经常会出各种报表,特别是在年终决算时各种报表多如牛毛,有的要求提取一年或者所有日期的数据,这时候就要求提取时间,格式如下:
20100101
20100102
……
20101231
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