Date Range problem


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Date Range problem
# 1  
Old 07-15-2009
Date Range problem

Hi ,
I need a function that verfies the given date is between start date and end date .
I have written this but this not working if start date is 1900/01/01

Below is my code

Code:
validateDate()
{
        RC=$#
        if [ $RC -lt "3" ]
        then
                return 0
        else
                 #echo "Start Date is $START_DATE and End Date is $END_DATE"
                 dateComp2=`echo $START_DATE $fileDate | awk '$2<$1{print -1;next}{print ($2>$1)}'`
		# echo "$START_DATE ==== $fileDate ==== $dateComp2 "
                 if [ $dateComp2 -ne -1 ]
                 then
			dateComp3=`echo $fileDate $END_DATE | awk '$2<$1{print -1;next}{print ($2>$1)}'`
			if [ $dateComp3 -ne -1 ]
			then
				return 1
			else 
				return 0
			fi
                 else 
			return 0
		 fi
		 
        fi

}

START_DATE=$1
fileDate=$2
END_DATE=$3
validateDate $1 $2 $3 
if [ $? -eq 1 ]
then
	echo "present "	
elif [ $? -eq 0 ]
then
	echo "not present "
fi

the above code is not working for
sh dateValidation.sh 1900/01/01 2009/07/15 2009/07/14

please suggest any modification or alternate function?

Last edited by vgersh99; 07-15-2009 at 07:37 AM.. Reason: code tags, PLEASE!
# 2  
Old 07-15-2009
posix-sh, ksh, bash, ...
Code:
#!/bin/ksh
validateDate()
{
    [ $# -ne 3 ] && return 2
    vb=$1
    ve=$3
    v=$2
    # remove /, no need if format is yyyy/mm/dd
    vb=${vb//\//}
    ve=${ve//\//}
    v=${v//\//}
    # now we can compare numbers
    (( v <= ve && v >= vb ))
    return $?
}
#main
START_DATE=$1
fileDate=$2
END_DATE=$3

if validateDate $START_DATE $fileDate $END_DATE
then
    echo "ok"
else
    echo "not ok"
fi

# 3  
Old 07-15-2009
Quote:
Originally Posted by Satyak
...
I need a function that verfies the given date is between start date and end date .
I have written this but this not working if start date is 1900/01/01
...
...
the above code is not working for
sh dateValidation.sh 1900/01/01 2009/07/15 2009/07/14

please suggest any modification or alternate function?
An alternative using Perl -

Code:
$ 
$ echo "1900/01/01 2009/07/15 2009/07/14" | 
perl -ne 'use Date::Simple; s!/!-!g; split; $gd=Date::Simple->new($_[1]);
if (Date::Simple->new($_[0]) <= $gd and $gd <= Date::Simple->new($_[2])) {
  print "Ok\n" } else { print "Not ok\n" }'
Not ok
$ 
$

tyler_durden
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Date range

Dear all, how can I select in the file below only the files created between Aug 14 2014 and Feb 03 2015? EZA2284I -rw-r--r-- 1 30 8 356954 Aug 15 2014 file1 EZA2284I -rw-rw-r-- 1 30 8 251396 Feb 05 12:53 file2 EZA2284I -rw-rw-r-- 1 30 8 ... (3 Replies)
Discussion started by: simomuc
3 Replies

2. UNIX for Dummies Questions & Answers

Find the count of files by last created date based on the given date range

My unix version is IBM AIX Version 6.1 I tried google my requirement and found the below answer, find . -newermt “2012-06-15 08:13" ! -newermt “2012-06-15 18:20" But newer command is not working in AIX version 6.1 unix I have given my requirement below: Input: atr files: ... (1 Reply)
Discussion started by: yuvaa27
1 Replies

3. UNIX for Dummies Questions & Answers

How can i get the date range for the last 4 days?

Hi i am try to run a script by using a dates here is what i am doing EXPORTDATE=`date --date "2 days ago" +%Y-%m-%d` sh /path/to/the/files.sh ${EXPORTDATE} the above code runs the job for one day,if i want to run the job for all the past 4 days how can i pass the date as a... (1 Reply)
Discussion started by: vikatakavi
1 Replies

4. Shell Programming and Scripting

Date listing in a date range

Solaris 10 ksh88 Sorry for re-hashing some of this, but I can't find a proper solution in the forums. Starting with /a/archive containing (on and on date formatted directories) 20060313 20080518 20100725 20121015 20060314 20080519 ... (1 Reply)
Discussion started by: moesplace
1 Replies

5. Shell Programming and Scripting

Date Range in UNIX

Hi Everyone How all are doing today, Want some help from All in Unix, What I am trying to do is , A shell file should be a called with two date parameters suppose the shell file name is run.sh run.sh <start_date> <end_date> If end date is not given it will pick today's date. The date should... (7 Replies)
Discussion started by: adisky123
7 Replies

6. Shell Programming and Scripting

Script on Date Range

Hi All, Can anybody help me out a Shell script which pulls the files based on date range Example ./test.sh start_date End_date (20110901 20110930) or ./test.sh ( if we don't provide any input) it should take sysdate-1 ( yesterdays date) it should have both conditions Plzz help me... (1 Reply)
Discussion started by: krux_rap
1 Replies

7. Shell Programming and Scripting

Date Range Problem

Hi All, I have a log file which has first few characters of every line as a timestamp. 2010-06-01 04:56:02,802 DEBUG {Thread-27} Some text message 2010-06-01 04:56:02,802 DEBUG {Thread-27} Some text message 2010-06-01 04:56:02,802 DEBUG {Thread-27} Some text message 2010-06-01... (7 Replies)
Discussion started by: nitin14341
7 Replies

8. UNIX Desktop Questions & Answers

date range

I have a number of instances wher I need to run reports for the previous month and need to include the last months date range in the sql. I want to create a string which consists of the first and last dates of last month separated with an ' and ' ie for this month (Feb) I want it to say '01/01/10... (3 Replies)
Discussion started by: Niven
3 Replies

9. Shell Programming and Scripting

Get date range between 2 date input

Hi Experts, I have files name report_20090416 report_20090417 report_20090418 report_20090420 report_20090421 I have 2 input from user From Date: 20090417 To Date: 20090420 and I need to grep only those line in between. Output should be report_20090417 report_20090418... (3 Replies)
Discussion started by: tanit
3 Replies

10. UNIX for Dummies Questions & Answers

cp only files in certain date range

hi all, I'm trying to do a cp only on files I created on a given day or within a certain date range. What's the best way to do this? Cheers, KL (1 Reply)
Discussion started by: ee7klt
1 Replies
Login or Register to Ask a Question