AIX系统利用Oracle取前N天日期

1、 Linux上可以用date -d "x days ago" +%Y%m%d命令取得X天以前的日期,但在AIXHP-UXWINBAT上就没有如此方便的命令了。在网上海找了半天,没发现较好的方法,最后想想何不SHELL结合ORACLE来做。本例是在AIX上试验,但在HP-UX上是一样的道理,应该也可以的,在DOS上的做法可以参考http://blog.csdn.net/nsj820/archive/2010/06/03/5645768.aspx中使用到的方法。

2、 AIXSHELL脚本如下:

maintain.sh

 export ORACLE_HOME=/opt/app/oracle/product/10.2.0; export ORACLE_SID=xypj; /opt/app/oracle/product/10.2.0/bin/sqlplus irsadmin/irsadmin<<! spool /home/oracle/IRS_EXEC/ago10.txt; set heading off; SELECT TO_CHAR(SYSDATE-10, 'YYYYMMDD') ago10 FROM DUAL; spool off; exit ! export DATE_10AGO=`awk 'NR==4' /home/oracle/IRS_EXEC/ago10.txt`; mkdir /home/oracle/IRS_EXEC/nisj_$DATE_10AGO;

3、 中间临时文件内容

ago10.txt

 SQL> set heading off; SQL> SELECT TO_CHAR(SYSDATE-10, 'YYYYMMDD') ago10 FROM DUAL; 20100613 SQL> spool off;

4、 说明

 

(1)Shell中如果牵涉到Crontab调度问题,就写出ORACLE_HOMEORACLE_SID环境变量,sqlplus命令写上完全路径,以免系统找不到;如果是手工调度,这些是不需要的。

(2)、最N天前日期时用到了awk命令,awk 'NR==4' ago10.txt表示取文件的第四行;根据中间临时文件生成的不同,略做改动。

(3)、最后一步是跟据取出的日期变量,进行系统操作:如生成、删除以日期后缀的文件或目录等。

你可能感兴趣的:(oracle,Date,shell,dos,AIX,2010)