Title: Unix shell Question

Date and string functions are not terribly easy in Unix, and generally involve parsing cal.  So, if you want to do sysdate-1, what you would do is this:

 

DAY=`date +%d`

MONTH=`date +%m`

YEAR=`date +%C%y`

echo $DAY $MONTH $YEAR

if [ $DAY = 1 ] ;

then

    if [ $MONTH = 1 ] ;

    then

        CAL_MONTH=12

        CAL_YEAR=`expr $YEAR - 1`

    else

        CAL_MONTH=`expr $MONTH - 1`

        CAL_YEAR=$YEAR

    fi

    CAL_DAY=`cal $CAL_MONTH $CAL_YEAR|tail -2|head -1|awk '{print $NF}'`

else

    CAL_DAY=`expr $DAY - 1`

    CAL_MONTH=$MONTH

    CAL_YEAR=$YEAR

fi

echo "Yesterday was $CAL_MONTH $CAL_DAY $CAL_YEAR"

 

or, you could do this:

 

sqlplus << EOF
scott/tiger

spool date

select sysdate-1 from dual;

exit

EOF

grep -v SQL date.lst|tail -2|head -1

 

 

Whichever.

 

HTH,

Bambi.

 

-----Original Message-----
From: Yuval Arnon [mailto:[EMAIL PROTECTED]]
Sent: Thursday, February 28, 2002 3:38 PM
To: Multiple recipients of list ORACLE-L
Subject: Unix shell Question

 

Hi,
Need help in Unix shell.
Is there a way to compute the previous date (similar to sysdate - 1 in SQL) using the date expression??

So if my date is 3/1/2002 I will get 2/28/20002.

 

TIA

Yuval.

Reply via email to