Comparing Dates


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Comparing Dates
# 1  
Old 12-02-2011
Comparing Dates

Hi

I'm trying to compare the current date (dd-Mmm-yyyy) against a variable that is an extracted date from an sql script. Below is the code:
Code:
datenow=`date '+%d-%h-%Y'`

#datenow is the current date in the format dd-Mmm-yyyy
Code:
sqlplus $dbuserid/$dbpassword @ $SCRIPT_PATH/business-date.sql > $SCRIPT_PATH/business-date.tmp

dbdate=`grep 'BusinessDate' $SCRIPT_PATH/business-date.tmp |cut -c1-11`

# value of business-date.tmp >>>  dd-Mmm-yyyy BusinessDate
# value of dbdate is in format  dd-Mmm-yyyy

if [ $dbdate -ge $datenow ]   
then
   echo "date rolled-over"
   SendOKmail
else
   SendNOTOKEmail
fi


But, I'm getting the error bad number

Could you please advise me the correct syntax?

Last edited by Franklin52; 12-03-2011 at 11:40 AM.. Reason: Please use code tags for data and code samples, thank you
# 2  
Old 12-02-2011
You're getting a bad number error because -ge instructs the test command to do a numeric compare and your dates are alphanumeric. This isn't pretty, but it does work:

Code:
#!/usr/bin/env ksh

# dates1 and 2 on command line (dd-MMM-yyyy) are converted to yyyymmdd
# and numerically compared.  A single digit is written to stdout to indicate the relationship:
#    -1  when d1 < d2
#    0   when equal
#     1  when d1 > d2 
#
function cmp_dt
{
    awk -v d1=$1  -v d2=$2 '
    BEGIN { soup = "JanFebMarAprMayJunJulAugSepOctNovDec";
        split( d1, sd1, "-" );
        split( d2, sd2, "-" );
        m1 = int(index( soup, sd1[2] ) / 3) + 1;
        m2 = int(index( soup, sd2[2] ) / 3) + 1;
        id1 = sprintf( "%4d%02d%02d", sd1[3], m1, sd1[1] )+0;
        id2 = sprintf( "%4d%02d%02d", sd2[3], m1, sd2[1] )+0;
        print (id1 > id2 ? 1 : 0  id1 < id2 ? -1 : 0);
    }'
}


# assign datenow and dbdate

if (( $(cmp_dt $dbdate $datenow) >= 0 ))
then
    echo "date rolled over"
else
    echo "date is ok"
fi

Should work in bash too, but I didn't test it there.

Last edited by agama; 12-02-2011 at 01:29 AM.. Reason: better comment
# 3  
Old 12-02-2011
Hi Agama,

Thanks for your prompt attention.

Let me try this.

I'll let you know the outcome.

Regards
joyAV
# 4  
Old 12-02-2011
Code:
#! /bin/bash

date1="02-Dec-2011"
date2="02-Oct-2011"

d1m=`echo $date1 | cut -d- -f2`
d2m=`echo $date2 | cut -d- -f2`

i=1
for m in Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
do
    [ "$d1m" == "$m" ] && d1m=$i
    [ "$d2m" == "$m" ] && d2m=$i
    i=$(($i + 1))
done

date1=$(echo $date1 | cut -d- -f3)$(printf "%02d" $d1m)$(echo $date1 | cut -d- -f1)
echo "date1 = $date1"
date2=$(echo $date2 | cut -d- -f3)$(printf "%02d" $d2m)$(echo $date2 | cut -d- -f1)
echo "date2 = $date2"

[ $date1 -gt $date2 ] && echo "date1 gt date2"

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Error while comparing dates

Hi I am failing to write a script which compares a list of dates in a file with today's date. OS: Solaris 10 I have a file which has server names & dates, i need to compare the date in this file with today's date, if it is less than today it should print the server name. code i tried is ... (3 Replies)
Discussion started by: nanz143
3 Replies

2. UNIX for Dummies Questions & Answers

about dates, comparing and calculation

Hi, can we do date comparisons in unix? like if i give the two dates find which date is old one and which is new one and difference between the two dates in terms of hours,minutes,days and months. (1 Reply)
Discussion started by: vmachava
1 Replies

3. Shell Programming and Scripting

Comparing dates

Hi, I want to compare today's date(DDMMYYYY) with yesterday(DDMMYYYY) from system date,if (today month = yesterday month) then execute alter query else do nothing.One more condition is change of year also i.e today is Jan1 2012 and yesterday is Dec 31 2011. The above rek i want in Shell... (4 Replies)
Discussion started by: kumarmsk1331
4 Replies

4. UNIX for Dummies Questions & Answers

comparing two dates.

Hi I have yesterday date and todays date stored in two variables. Today date is stored in variable -- testdate=`date +%m/%d/%Y` I found the yesterday date and stored in variable -- ydate=$month'/'$day1'/'$year Now i am trying to find out whether $testdate is less that $ydate. I am... (6 Replies)
Discussion started by: intiraju
6 Replies

5. Shell Programming and Scripting

comparing dates

Hi guys I have a a variable called check_ts which holds a date value. this date value keeps refreshing every 15 minutes. I am going to start a cron job 5 minutes after the refresh. I have to check if the current date > 20 min of check_ts. how do i do that. thanks ragha (17 Replies)
Discussion started by: ragha81
17 Replies

6. Shell Programming and Scripting

Comparing two dates

Hi, Can some one guide me how to compare two dates in unix. TIA Gupta (5 Replies)
Discussion started by: guptan
5 Replies

7. Shell Programming and Scripting

Comparing last modified dates

Hi All. Can someone please give me an example of how I'd do a comparison to find out if the last modified date of a file is newer than yesterday (i.e. today - 1 day)? Example: if ; then echo "Do something..." fi Any ideas or examples? Thanks. (1 Reply)
Discussion started by: dmilks
1 Replies

8. Programming

comparing dates

hi is there a c function in linux for comparing dates. thanx in advance. svh (2 Replies)
Discussion started by: svh
2 Replies

9. Shell Programming and Scripting

comparing 2 dates

hi , I have two variables both containg dates, x= `date` and y= `date' their format being -> Fri Nov 12 22:59:50 MST 2004 how do I compare which one is greater. ->Can dates be converted into integer and then compared? ( one lengthy way would be to compare the words one by... (7 Replies)
Discussion started by: k_oops9
7 Replies

10. Shell Programming and Scripting

comparing 2 dates in Bourne shell

HI, I am able to find days difference using FIND command. However it is comparing between today and the last time it was modified. I now need to find the difference between a date specified by myself and the last time the file was modified. Is there a command which I can use or I have to... (1 Reply)
Discussion started by: scmay
1 Replies
Login or Register to Ask a Question