Tdate = OCONV(DATE(),"D4-") mm1= Tdate[1,2]+1 yyyy1 = Tdate[7,4] if mm1 > 12 then mm1 = "01" yyyy1 += 1 end EDATE = ICONV(mm1:"-01-":yyyy1,"D4-") - 1 EDATE = OCONV(EDATE,"D2/");**** here is external format end-of-month ****
-----Original Message----- From: Rick Nuckolls <r...@lynden.com> To: U2 Users List <u2-users@listserver.u2ug.org> Sent: Mon, Dec 5, 2011 5:00 pm Subject: Re: [U2] End of Month date routine Just for laughs, the following works with only a single date conversion, though will admit that it gets a little too obscure to be considered maintainable. dmittedly, there are probably easier ways to tell how many days there are in a onth, but they may not be as much fun! Rick Nuckolls ynden Inc extdate = oconv( d, 'D4-YMD') year = field(extdate, '-',1) month = field( extdate, '-', 2) dom = field(extdate,'-',3) if month = 2 then daysinmonth = 28 + ( not(mod(year,4)) & ( mod(year,100) ! ot(mod(year,400)) )) end else daysinmonth = 30 + mod( if month < 8 then abs(month-2) else month-7, ) end lastdayofmonth = d - dom + daysinmonth n Dec 5, 2011, at 2:26 PM, Wjhonson wrote: > I changed Marco's code slightly using Oconv to make it more clear what DD is oing and make it more generic I'm also adding 40 instead of 32 to make it clear that we don't care how much e are adding as long as it's between 32 and 57 To make it clear what this is doing, we are taking the internal date, and ubtracting from that the "day number" on which we are running. This will *always* give you the last day of the previous month. Always. Then we add enough to jump us into the next month anywhere, doesn't matter at ll. And then do the same trick again, which will *always* give you the last day of he month in which you are running This is a fantastic bit of magic. TODAY = DATE() ; LAST.MO.END = TODAY - OCONV(TODAY,'DD') A.DAY.NEXT.MO = LAST.MO.END + 40 END.OF.MO.DATE = A.DAY.NEXT.MO - OCONV(A.DAY.NEXT.MO,'DD') -----Original Message----- From: Wjhonson <wjhon...@aol.com> To: u2-users <u2-users@listserver.u2ug.org> Sent: Mon, Dec 5, 2011 2:15 pm Subject: Re: [U2] End of Month date routine arco, this is absolutely brilliant. nd I reserve the use of the word "brilliant", for code that truly transcends ormal space-time 'm not certain that the use of "DD" is vendor independent, but it could be ade o, by merely using OCONV(TODAY, 'DD') instead -----Original Message----- rom: Marco Antonio Rojas Castro <marco_roja...@hotmail.com> o: u2-users <u2-users@listserver.u2ug.org> ent: Mon, Dec 5, 2011 12:49 pm ubject: Re: [U2] End of Month date routine ODAY = DATE() M = TODAY - TODAY"DD" + 32 M = EOM - EOM"DD" To: u2-users@listserver.u2ug.org From: wjhon...@aol.com Date: Mon, 5 Dec 2011 15:16:02 -0500 Subject: Re: [U2] End of Month date routine Doesn't work on my system Anthony. The This month o gives the month and year ok but the attempt to iconv that sets it to zero, it doesn't pad the "01" into it > something so i just get 31 at that point. I think you were expecting that it would take "12 2011" and make it into "12 2011" or whatever but it's not working -----Original Message----- From: George Gallen <ggal...@wyanokegroup.com> To: U2 Users List <u2-users@listserver.u2ug.org> Sent: Mon, Dec 5, 2011 12:10 pm Subject: Re: [U2] End of Month date routine Haven't checked it, but what happens on 01/31 by adding 31, it should take you > arch, backing up Will give you 02/xx (28 or 29)? George -----Original Message----- rom: u2-users-boun...@listserver.u2ug.org [mailto:u2-users-boun...@listserver.u2ug.org] >> n Behalf Of Wols Lists ent: Monday, December 05, 2011 3:05 PM o: u2-users@listserver.u2ug.org ubject: Re: [U2] End of Month date routine On 05/12/11 19:03, Wjhonson wrote: Does someone have a routine that, no matter what day you run it, returns the nd of Month Date ? (Assume the end of month date, is the calendar end of month date not some crewy business date) Hmmm... no-one seems to have done my approach ... TODAY = @DATE HIS.MONTH.O = OCONV (TODAY, "DMY") ;* strip day off EXT.MONTH.I = ICONV( THIS.MONTH.O, "D") + 31 ;* random day next month EXT.MONTH.O = OCONV( NEXT.MONTH.I, "DMY") ;* strip day off AST.DAY.I = ICONV( NEXT.MONTH.O, "D") - 1 ;* subract one day If you don't have a day in your i/oconv it defaults to 1, so the logic orks. Unfortunately you can't combine the first three lines because here's no number you can pick that will guarantee to land you in next onth whatever today's date :-( Cheers, ol ______________________________________________ 2-Users mailing list 2-us...@listserver.u2ug.org ttp://listserver.u2ug.org/mailman/listinfo/u2-users ______________________________________________ 2-Users mailing list 2-us...@listserver.u2ug.org ttp://listserver.u2ug.org/mailman/listinfo/u2-users _______________________________________________ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users _____________________________________________ -Users mailing list -us...@listserver.u2ug.org tp://listserver.u2ug.org/mailman/listinfo/u2-users _______________________________________________ 2-Users mailing list 2-us...@listserver.u2ug.org ttp://listserver.u2ug.org/mailman/listinfo/u2-users _______________________________________________ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users _______________________________________________ 2-Users mailing list 2-us...@listserver.u2ug.org ttp://listserver.u2ug.org/mailman/listinfo/u2-users _______________________________________________ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users