|
Looks like my example led the group in a wrong way. 1st thing I was not trying to calculate the end of the month. my simple question is: 1 + 1 + 1 => 3 <= 2 + 1 but Date + %months(2) is not equal to Date + %months(1) + %months(1) Here date need not always be the end of month. Eg: 2006-01-30 is not End Of Month 2006-01-30 + %months(2) = 2006-03-31 but 2006-01-30 + %months(1) + %months(1) is not equal to 2006-03-31 --Praveen On 3/28/06, Lim Hock-Chai <Lim.Hock-Chai@xxxxxxxxxxxxxxx> wrote: > > Oops. You are right. Forgot to add one month on subdt. Thanks for the > correction. > Also %month(1) should be %months(1) > > -----Original Message----- > From: rpg400-l-bounces@xxxxxxxxxxxx > [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of HauserSSS > Sent: Monday, March 27, 2006 11:13 PM > To: RPG programming on the AS400 / iSeries > Subject: AW: Bug in IBM Date Routies %month > > Hi Lim, > > >>date1 = date1 + %month(1) - %days(%subdt(date1:*days)) > > this formula is not correct either. > Try to determine the end of month for January, 30th! > > The correct formula is: > Date1 = Date1 + %Month(1) - %Days(%SubDt(Date1 + %Month(1)): *Days)) > > Note: In Release V5R4M0 you also can use the SQL scalar function > LAST_DAY to determine the end of month: > EXEC SQL Set :NewDate = LAST_DAY(:MyDate); > > Mit freundlichen Gru?en / Best regards > > Birgitta > > "Shoot for the moon, even if you miss, you'll land among the stars." > (Les Brown) > > -----Ursprungliche Nachricht----- > Von: rpg400-l-bounces@xxxxxxxxxxxx > [mailto:rpg400-l-bounces@xxxxxxxxxxxx]Im Auftrag von Lim Hock-Chai > Gesendet: Dienstag, 28. Marz 2006 00:53 > An: RPG programming on the AS400 / iSeries > Betreff: RE: Bug in IBM Date Routies %month > > > If you need the date to always be the month end date, you can simply do > below: > date1 = date1 + %month(1) - %days(%subdt(date1:*days)) > > I don't think you can do the samething in java. Not on one statemnet > anyway. I try to do it in two separate statement and get the same > result 3/28/06: > package myTest; > > import java.util.*; > > public class MyTest { > > public static void main(String[] args) { > > GregorianCalendar myDate = new GregorianCalendar(2006, > 0, 31,0,0,0); > System.out.println( > "Year="+myDate.get(Calendar.YEAR)+';'+ > "Month="+myDate.get(Calendar.MONTH)+';'+ > "Day="+myDate.get(Calendar.DATE)); > > myDate.add(Calendar.MONTH, 1); > System.out.println( > "Year="+myDate.get(Calendar.YEAR)+';'+ > "Month="+myDate.get(Calendar.MONTH)+';'+ > "Day="+myDate.get(Calendar.DATE)); > > myDate.add(Calendar.MONTH, 1); > System.out.println( > "Year="+myDate.get(Calendar.YEAR)+';'+ > "Month="+myDate.get(Calendar.MONTH)+';'+ > "Day="+myDate.get(Calendar.DATE)); > System.exit(0); > } > } > > Below if the result when run above: > Year=2006;Month=0;Day=31 > Year=2006;Month=1;Day=28 > Year=2006;Month=2;Day=28 > > -----Original Message----- > From: rpg400-l-bounces@xxxxxxxxxxxx > [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of praveen gunda > Sent: Monday, March 27, 2006 3:36 PM > To: RPG programming on the AS400 / iSeries > Subject: Re: Bug in IBM Date Routies %month > > I think IBM should have taken care of this, similar to how they have > taken care of this. > > 2006-01-31 + %months(1) = 2006--2-28 > > Also, > 2006-01-31 + %months(2) should be consistent with 2006-01-31 + > %months(1) + > %months(1) > > Adding 2 months or adding 1 month + 1 months should be same right? > > I write a lot in Java, and have never came across such a problem. > > > > On 3/27/06, Michael_Schutte@xxxxxxxxxxxx <Michael_Schutte@xxxxxxxxxxxx> > wrote: > > > > You get the same issue when you do it with the date of 3/31/2006 > > instead of > > 1/31/2006 > > > > Michael Schutte > > Work 614-492-7419 > > email michael_schutte@xxxxxxxxxxxx > > > > > > > > "Peter Dow (ML)" > > <maillist@dowsoft > > ware.com> > To > > Sent by: RPG programming on the AS400 / > > rpg400-l-bounces+ iSeries <rpg400-l@xxxxxxxxxxxx> > > michael_schutte=b > cc > > obevans.com@midra > > nge.com > Subject > > Re: Bug in IBM Date Routies > > %month > > > > 03/27/2006 04:23 > > PM > > > > > > Please respond to > > RPG programming > > on the AS400 / > > iSeries > > <rpg400-l@midrang > > e.com> > > > > > > > > > > > > > > Hi Praveen, > > > > Actually, that's not a bug, it's a problem with intermediate values. > > When you add 1 month to 2006-01-31, what do you get? 2006-02-31 is > > not a valid date; instead you get 2006-02-28 (see the manual). When > > you then add 1 month to that, you get 2006-03-28. Date arithmetic is > > tricky... > > > > hth, > > > > Peter Dow > > Dow Software Services, Inc. > > 909 793-9050 > > > > praveen gunda wrote: > > > I found the following bug with IBM Date rountines... Was there a fix > > > > for this? > > > > > > > > > Ddate1 s d datfmt(*ymd) > > > /Free > > > cymd = 20060131; > > > date1 = %date(cymd:*ISO); > > > dsply %char( (date1+%months(2)):*iso ); > > > dsply %char( (date1+%months(1)+%months(1)) :*iso); > > > /End-Free > > > > > > > > > Heres' the output: > > > > > > DSPLY 2006-03-31 > > > DSPLY 2006-03-28 > > > > > > Shouldn't it be 2006-03-31 both the times. > > > > > > > -- > > This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing > > list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, > > unsubscribe, or change list options, > > visit: http://lists.midrange.com/mailman/listinfo/rpg400-l > > or email: RPG400-L-request@xxxxxxxxxxxx Before posting, please take a > > moment to review the archives at http://archive.midrange.com/rpg400-l. > > > > > > > > -- > > This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing > > list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, > > unsubscribe, or change list options, > > visit: http://lists.midrange.com/mailman/listinfo/rpg400-l > > or email: RPG400-L-request@xxxxxxxxxxxx Before posting, please take a > > moment to review the archives at http://archive.midrange.com/rpg400-l. > > > > > -- > This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing > list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, > unsubscribe, or change list options, > visit: http://lists.midrange.com/mailman/listinfo/rpg400-l > or email: RPG400-L-request@xxxxxxxxxxxx > Before posting, please take a moment to review the archives at > http://archive.midrange.com/rpg400-l. > > > -- > This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing > list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, > unsubscribe, or change list options, > visit: http://lists.midrange.com/mailman/listinfo/rpg400-l > or email: RPG400-L-request@xxxxxxxxxxxx > Before posting, please take a moment to review the archives at > http://archive.midrange.com/rpg400-l. > > > > -- > This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing > list To post a message email: RPG400-L@xxxxxxxxxxxx To subscribe, > unsubscribe, or change list options, > visit: http://lists.midrange.com/mailman/listinfo/rpg400-l > or email: RPG400-L-request@xxxxxxxxxxxx > Before posting, please take a moment to review the archives at > http://archive.midrange.com/rpg400-l. > > > -- > This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list > To post a message email: RPG400-L@xxxxxxxxxxxx > To subscribe, unsubscribe, or change list options, > visit: http://lists.midrange.com/mailman/listinfo/rpg400-l > or email: RPG400-L-request@xxxxxxxxxxxx > Before posting, please take a moment to review the archives > at http://archive.midrange.com/rpg400-l. > >
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.