Sponsored Content
Full Discussion: Date variable - 1 in UNIX
Top Forums Shell Programming and Scripting Date variable - 1 in UNIX Post 302933260 by siddharthmani on Thursday 29th of January 2015 02:52:51 AM
Old 01-29-2015
Quote:
Originally Posted by RavinderSingh13
Hello siddharthmani,

Could you please try following code and let me know if this helps you.
Code:
cat scipt.ksh
echo $1 | awk -vs1="01" -vs2="03" -vs3="12" '{if(length($0)>8){print "Wrong Input!!";exit};YEAR=substr($0,1,4);YEAR+0;MONTH=substr($0,5,2);MONTH+0;DATE=substr($0,7,2);DATE+0;split("31 29 31 30 31 30 31 31 30 31 30 31", W," ");if(DATE==s1 && MONTH==s1){YEAR=YEAR-1; MONTH=12; DATE=31; print YEAR MONTH DATE}  else if(DATE==s1 && MONTH >= s1 && MONTH <= s3){MONTH=MONTH-1;W[2]=(YEAR%4!=0)?28:29;print YEAR MONTH W[MONTH]} else {DATE=DATE-1;printf("%04d%02d%02d\n", YEAR, MONTH, DATE)}}'

Now when we run the script as follows.
Code:
./script.ksh 20000101 #(Input should be passed in yyyymmdd manner)
19991231 #Is the output

Similar way you can pass your variable to this script.

EDIT: Adding a non oneliner form of same solution.
Code:
cat script.ksh
echo $1 | awk -vs1="01" -vs2="03" -vs3="12" '{
                                                if(length($0)>8){
                                                                        print "Wrong Input!!";
                                                                        exit
                                                                }
                                                YEAR=substr($0,1,4);
                                                YEAR+0;
                                                MONTH=substr($0,5,2);
                                                MONTH+0;
                                                DATE=substr($0,7,2);
                                                DATE+0;
                                                split("31 29 31 30 31 30 31 31 30 31 30 31", W," ");
                                                if(DATE==s1 && MONTH==s1){
                                                                                YEAR=YEAR-1;
                                                                                MONTH=12;
                                                                                DATE=31;
                                                                                print YEAR MONTH DATE
                                                                         }
                                                else if(DATE==s1 && MONTH >= s1 && MONTH <= s3){
                                                                                MONTH=MONTH-1;
                                                                                W[2]=(YEAR%4!=0)?28:29;
                                                                                print YEAR MONTH W[MONTH]
                                                                                                }
                                                else {
                                                                                DATE=DATE-1;
                                                                                printf("%04d%02d%02d\n", YEAR, MONTH, DATE);
                                                     }
                                              }'


Thanks,
R. Singh
hi,

Thanks for the reply..but i cant include another script for just this purpose..is it possible to include the same logic in my script?
also note i need to use this date in an sql query..so will that be possible?
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

converting unix date variable to gmt

Hi, I have a ksh script which extracts files from a directory in the following format, eg: 10288.Job.rescheduled.1154647335 I need to extract the unix timestamp (eg 1154647335) and convert it to dd-mm-yyyy. Can anyone suggest anything for this? thanks. :confused: (6 Replies)
Discussion started by: chilli
6 Replies

2. Shell Programming and Scripting

Compare date from db2 table to yesterday's Unix system date

I am currently running the following Korn shell script which works fine: #!/usr/bin/ksh count=`db2 -x "select count(*) from schema.tablename"` echo "count" I would like to add a "where" clause to the 2nd line that would allow me to get a record count of all the records from schema.tablename... (9 Replies)
Discussion started by: sasaliasim
9 Replies

3. Shell Programming and Scripting

convert date variable to doy variable

Hello: I have a script that requires the use of DOY (as a variable) instead of YY/MM/DD. I already obtained these parameters from downloaded files and stored them as variables (i.e. $day, $month, $year). Is there any simple script that I could incorporate in mine to do this job? Regards, ... (8 Replies)
Discussion started by: aabrego
8 Replies

4. Shell Programming and Scripting

How to check date variable according to the current date?

Hi folks, I need to write a script that should activate a process according to the current hour. The process should be activatet only if the hour is between midnight (00:00) and 07:00. How should I create the condition? Thanks in advance, Nir (2 Replies)
Discussion started by: nir_s
2 Replies

5. Shell Programming and Scripting

Using sed command replace date variable in unix

I need to use a shell script, using sed command how to replace date variable value in following format. 04/18/2012 11:38:55 Because the sed is treating the '/' as a parameter instead of the value of a variable, and hence there is the message as sed: command garbled: s/insert/04/18/2012... (9 Replies)
Discussion started by: jannusuresh
9 Replies

6. Shell Programming and Scripting

LINUX ---> Add one date to a date variable

Hi All, I am trying to add one day to the busdt variable i am extracting from a file (DynamicParam.env). I am deriving the busdt as below. Is there any function which I can use to derive as below. If busdt=20120910, then the new derived variable value should be 20120911 If... (2 Replies)
Discussion started by: dsfreddie
2 Replies

7. Solaris

Setting Date Variable +1 date

I need to set a date varable within ksh that will set the date to the next day in the format 25-JUL-2013 - any help would be appreciated. (3 Replies)
Discussion started by: bjdamon
3 Replies

8. Shell Programming and Scripting

Convert a date stored in a variable to epoch date

I am not able to pass date stored in a variable as an argument to date command. I get current date value for from_date and to_date #!/usr/bin/ksh set -x for s in server ; do ssh -T $s <<-EOF from_date="12-Jan-2015 12:02:09" to_date="24-Jan-2015 13:02:09" echo \$from_date echo... (7 Replies)
Discussion started by: raj48
7 Replies

9. HP-UX

awk command in hp UNIX subtract 30 days automatically from current date without date illegal option

current date command runs well awk -v t="$(date +%Y-%m-%d)" -F "'" '$1 < t' myname.dat subtract 30 days fails awk -v t="$(date --date="-30days" +%Y-%m-%d)" -F "'" '$1 < t' myname.dat awk command in hp unix subtract 30 days automatically from current date without date illegal option error... (20 Replies)
Discussion started by: kmarcus
20 Replies

10. UNIX for Beginners Questions & Answers

How to replace a parameter(variable) date value inside a text files daily with current date?

Hello All, we what we call a parameter file (.txt) where my application read dynamic values when the job is triggered, one of such values are below: abc.txt ------------------ line1 line2 line3 $$EDWS_DATE_INSERT=08-27-2019 line4 $$EDWS_PREV_DATE_INSERT=08-26-2019 I am trying to... (1 Reply)
Discussion started by: pradeepp
1 Replies
All times are GMT -4. The time now is 07:52 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy