Subtracting months from passed Date


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Subtracting months from passed Date
# 1  
Old 11-30-2014
Subtracting months from passed Date

Hi All,

I am getting a date from environment variable and want to do some processing by subtracting 2 months from the date passed through the environment variable.

I am trying the following syntax :

Code:
date_var=2014-08-31
 date_2M_ago='$date_var+"%d%m%y" --$date_var="2 months ago" '

If I am using the system date,the below syntax works fine :

Code:
date_2M_ago='date+"%d%m%y" --date="2 months ago"

But I want 2 months to be subtracted from the date passed through the environment variable.

Please suggest the correct syntax.
# 2  
Old 11-30-2014
With GNU date:
Code:
date_var='2013-08-31'
date_2m_ago=$(date -d "$date_var -2 months" +%Y-%m-%d)

# 3  
Old 05-04-2015
HI Balaji,

Thanks for the reply. I have tried the below code, it's working fine for most of the dates but with few discrepancies.

Code:
 
 date_var=$1
 day_var=${date_var##*-}
 date_2m_ago=$(date -d "$date_var -2 months" +%Y-%m-%d)
 day_2m_ago=${date_2m_ago##*-}
 if [[ ${day_var} = ${day_2m_ago} ]]
 then 
 echo "same"
 else
 echo "difference"
 date_2m_ago=$(date -d "date_2m_ago -1 days" +%Y-%m-%d)
 echo $date_2m_ago
 fi

The date passed as input parameter will always be the end of the month date and I need the output to be 2 months prior to the input date but want the O/P to be the end of the month date.

The above code is giving me the following output :

I/P Actual O/P expected O/P
2014-02-28 --> 2013-12-28 2013-12-31
2014-04-30 --> 2014-03-01 2014-02-28
2014-09-30 --> 2014-07-30 2014-07-31

The above code is giving the correct o/p for the rest of the month end dates for year 2014.

Thanks for your help!
# 4  
Old 05-04-2015
Try
Code:
date_var='2014-02-28'
date -d"$(date -d"$date_var -45days" +"%Y/%m/01 - 1day")" +"%Y-%m-%d"
2013-12-31

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Changing CSV files with date . Subtracting date by values

Hi All, I have a CSV file which is as below. Basically I need to take the year column in it and find if the year is >= 20152 . If that is then I should subtract all values by 6. In the below example in description I am having number mentioned as YYWW so I need to subtract those by -5. Whereever... (8 Replies)
Discussion started by: arunkumar_mca
8 Replies

2. Shell Programming and Scripting

Subtracting a date based on ls output

I am trying to achieve to get only the month and the day. Example Feb 5 (as you can see if it is feb 1-9) the space is 2. If it is feb 10-28, the space is only 1. I am trying to right a script that will list a directory and shoot an email if there is an activity in last 7 days. I dont really trust... (5 Replies)
Discussion started by: invinzin21
5 Replies

3. UNIX for Dummies Questions & Answers

Subtracting A month from an arbitrary date in UNIX

Hi, Is there a way to subtract a month or at least 30 days from an arbitrary or user inputted date without the GNU date? Example: please Input date: 2011-05-11 then the answer will be 2011-04-11 This code doesn't work: $date -d "2011-05-11 - 1 month" "+%Y%m%d" Thanks (7 Replies)
Discussion started by: erin00
7 Replies

4. Shell Programming and Scripting

Adding/ Subtracting from Date

Hi , How can I add/substruct x number of days with date? For example My_Date=`date` Now I need Hope it's clear. (2 Replies)
Discussion started by: Anupam_Halder
2 Replies

5. Shell Programming and Scripting

SQL one liner for subtracting 1 from date

I got a statement like below to subtract 1 from given date using teradata. I am looking for a one line unix command to perform the same. select 'parse_this_record', (DATE '${FILE_DATE}' - 1) (FORMAT 'YYYY-MM-DD'); Input: 2012-02-21 Expected Output: 2012-02-20 PS: One liner because I am... (2 Replies)
Discussion started by: siteregsam
2 Replies

6. UNIX for Dummies Questions & Answers

Static date adding and subtracting years

Hi Gurus! I have a static date in a YYYYMMDD format; and I want get the date 2 years in the past and 2 years in the future. static_date=20010203 old_date=$static_date - 3 years future_date=$static_date + 2 years I was only able to research on dates that are current and not on static... (3 Replies)
Discussion started by: kokoro
3 Replies

7. Shell Programming and Scripting

How to derive the last Sunday's date when Current date value is passed

Hi All, I have a requirement in my project where a batch runs on any day of a week. The input files will land to the server every Sunday. I need to read these files based on the current BUS_DAY (which falls any day of the week). For e.g : if the BUS_DAY is 20120308, we need to derive the... (3 Replies)
Discussion started by: dsfreddie
3 Replies

8. UNIX for Dummies Questions & Answers

adding or subtracting days in the o/p of date

how can we add or subtract days from the output of date command in unix... like if i want to subtract a day from the result of date command like this.. v_date=`date +%Y%m%d` this wud give me 20080519 now i want to subtract one day from this.. so tht it wud give me 20080518.. how do i do... (1 Reply)
Discussion started by: St.Fartatric
1 Replies

9. Shell Programming and Scripting

Subtracting date / timestamps

I have looked through the forums and found many date / time manipulation tools, but cannot seem to find something that fits my needs for the following. I have a log file with date time stamps like this: Jun 21 17:21:52 Jun 21 17:24:56 Jun 21 17:27:59 Jun 21 17:31:03 Jun 21 17:34:07 Jun... (0 Replies)
Discussion started by: roadcyclist
0 Replies

10. Shell Programming and Scripting

subtracting a days from current date

Hi i am trying to subtract days from current date. For example todays date is 10/03/2006. If i subtract 2 days it should give 8/03/2006. I am also trying to find the access date of a file in dd/mm/yyyy format. Can any one please help in how to do this. Ramesh (1 Reply)
Discussion started by: rameshspal
1 Replies
Login or Register to Ask a Question