1

私の仕事では、特定の日付から 6 か月から 18 か月さかのぼって計算する必要があります。私は2つの例を持っています。例 1: 私の仕事では、顧客からの返金を計算するよう求められています。これらの払い戻しは、一度に 18 か月のみ可能であり、払い戻し期間の最終日は、手紙がクライアントに送信された日です。では、返金レターが 2012 年 8 月 28 日に送信されるように設定されている場合、その期間の最初の日付は何ですか? また、8 月 29 日、30 日、31 日 (2012 年 8 月 28 日 - 2012 年 8 月 31 日) の場合はどうでしょうか。私の計算では、これらすべての期間の開始日は 2011 年 3 月 1 日です。プログラムツールとして SAS を使用しています。使用した関数は次のとおりです。

 eighteen_months = intnx('month',Visit_date,18,'sameday')+1;

私が行っている主な仮定は、1 か月が最初の月の最初の日付と最後の日付と同じ月 (2012 年 1 月 1 日から 2012 年 1 月 31 日まで) に等しいということです。その後、3 か月は、最初の月の最初の日付と 3 か月目の最後の日付 (2012 年 1 月 1 日から 2012 年 3 月 31 日まで、または 2012 年 4 月 1 日から 2012 年 6 月 30 日まで) に等しくなります。他の 18 か月の計算は次のとおりです。

                First Date           Last Date
                10/30/1999           4/29/2001
                 5/6/2006            11/5/2007
                4/30/2012           10/29/2013
                 4/3/2018            10/2/2019
                  2/24/2024          8/23/2025
                  5/10/2026          11/9/2027

この問題は、8 月 28 ~ 31 日の元の例の場合に発生します。ここで、18 か月は実際には 4 つの異なる時間の長さになる可能性があります。

例 2: 私の仕事では、最初の日付があり、6 か月から 18 か月の期間を把握する必要があるという逆のことも求められます。最近、最初の日付が 2012 年 6 月 22 日である場合、6 か月とは何ですか?と尋ねられました。私は 12/21/2012 と返信し、実際には 12/22/2012 だと言われました。会社でこれがどのように計算されるかについての実際の文書/ロジックはありません。これがSASでの私の機能です。

    Six_months = intnx('month',Visit_date,6,'sameday')-1;

私はプロセスを確立しようとしており、誰かが一貫してこれらのプロセスに遭遇するかどうか、および Excel/SAS でより簡単な方法があるかどうかを確認したいと考えていました。どんな回答でも大歓迎です。

4

3 に答える 3

2

Excel で最終日から最初の日付を取得するには、最終日が B2 であるこの式を試してください

=EDATE(B2,-18)+1

これは、リストされている6つの例で機能し、2012年8月28/29/30/31から2011年3月1日を返すためにも機能します

ご想像のとおり、EDATE 関数を使用して、日付から月数を加算または減算できます。2 月 30 日のように、その月内にその日が存在しない場合は、デフォルトでその月の最後の日になります。

于 2012-10-01T19:25:11.653 に答える
0

多くのデータベースは、関数add_monthsまたはdateadd類似のものをサポートしています (Teradata を含む)。18 か月前後の日付を取得するには、次のようにします。

select add_months(LastDate, -18), LastDate

それは前の質問に答えると思います。複数の日付があるため、答えの質問は少しトリッキーです。次のトリックを使用して、最初と最後の日付を取得できます。

select add_months(FirstDate, 18) as LastDate1,
       add_months(FirstDate+1, 18) - 1 as LastDate2

つまり、add_months は、18 か月先であるという条件に一致する最初の日を返します (これはかなり確信していますが、Teradata が 100% 肯定的というわけではありません)。2 番目の日付は、翌日から 18 か月前の 1 日です。通常、最初の日付と同じですが、常にではありません。

于 2012-10-01T19:35:44.523 に答える
0

これはロリンとダンの強引な方法です

%MACRO DATES(YEAR, lib);
data post.try&lib.; set post.pact;
IF DTE_EFFECTIVE LE &year. LE DTE_END  THEN DO ELIGMONTH= &year.; FORMAT ELIGMONTH MMDDYY10.; OUTPUT post.TRY&lib.;  END;
run;
%MEND;
%DATES (YEAR='01JAN2000'D, LIB=a)
%DATES (YEAR='01FEB2000'D, LIB=b)
%DATES (YEAR='01MAR2000'D, LIB=c)
%DATES (YEAR='01APR2000'D, LIB=d)
%DATES (YEAR='01MAY2000'D, LIB=e)
%DATES (YEAR='01JUN2000'D, LIB=f)
%DATES (YEAR='01JUL2000'D, LIB=g)
%DATES (YEAR='01AUG2000'D, LIB=h)
%DATES (YEAR='01SEP2000'D, LIB=i)
%DATES (YEAR='01OCT2000'D, LIB=j)
%DATES (YEAR='01NOV2000'D, LIB=k)
%DATES (YEAR='01DEC2000'D, LIB=l)
%DATES (YEAR='01JAN2001'D, LIB=m)
%DATES (YEAR='01FEB2001'D, LIB=n)
%DATES (YEAR='01MAR2001'D, LIB=o)
%DATES (YEAR='01APR2001'D, LIB=p)
%DATES (YEAR='01MAY2001'D, LIB=q)
%DATES (YEAR='01JUN2001'D, LIB=r)
%DATES (YEAR='01JUL2001'D, LIB=s)
%DATES (YEAR='01AUG2001'D, LIB=t)
%DATES (YEAR='01SEP2001'D, LIB=u)
%DATES (YEAR='01OCT2001'D, LIB=v)
%DATES (YEAR='01NOV2001'D, LIB=w)
%DATES (YEAR='01DEC2001'D, LIB=x)
%DATES (YEAR='01JAN2002'D, LIB=y)
%DATES (YEAR='01FEB2002'D, LIB=z)
%DATES (YEAR='01MAR2002'D, LIB=aa)
%DATES (YEAR='01APR2002'D, LIB=bb)
%DATES (YEAR='01MAY2002'D, LIB=cc)
%DATES (YEAR='01JUN2002'D, LIB=dd)
%DATES (YEAR='01JUL2002'D, LIB=ee)
%DATES (YEAR='01AUG2002'D, LIB=ff)
%DATES (YEAR='01SEP2002'D, LIB=gg)
%DATES (YEAR='01OCT2002'D, LIB=hh)
%DATES (YEAR='01NOV2002'D, LIB=ii)
%DATES (YEAR='01DEC2002'D, LIB=jj)
%DATES (YEAR='01JAN2003'D, LIB=kk)
%DATES (YEAR='01FEB2003'D, LIB=ll)
%DATES (YEAR='01MAR2003'D, LIB=mm)
%DATES (YEAR='01APR2003'D, LIB=nn)
%DATES (YEAR='01MAY2003'D, LIB=oo)
%DATES (YEAR='01JUN2003'D, LIB=pp)
%DATES (YEAR='01JUL2003'D, LIB=qq)
%DATES (YEAR='01AUG2003'D, LIB=rr)
%DATES (YEAR='01SEP2003'D, LIB=ss)
%DATES (YEAR='01OCT2003'D, LIB=tt)
%DATES (YEAR='01NOV2003'D, LIB=uu)
%DATES (YEAR='01DEC2003'D, LIB=vv)
%DATES (YEAR='01JAN2004'D, LIB=ww)
%DATES (YEAR='01FEB2004'D, LIB=xx)
%DATES (YEAR='01MAR2004'D, LIB=yy)
%DATES (YEAR='01APR2004'D, LIB=zz)
%DATES (YEAR='01MAY2004'D, LIB=aa)
%DATES (YEAR='01JUN2004'D, LIB=bb)
%DATES (YEAR='01JUL2004'D, LIB=cc)
%DATES (YEAR='01AUG2004'D, LIB=dd)
%DATES (YEAR='01SEP2004'D, LIB=ee)
%DATES (YEAR='01OCT2004'D, LIB=ff)
%DATES (YEAR='01NOV2004'D, LIB=gg)
%DATES (YEAR='01DEC2004'D, LIB=hh)
%DATES (YEAR='01JAN2005'D, LIB=ii)
%DATES (YEAR='01FEB2005'D, LIB=jj)
%DATES (YEAR='01MAR2005'D, LIB=kk)
%DATES (YEAR='01APR2005'D, LIB=ll)
%DATES (YEAR='01MAY2005'D, LIB=mm)
%DATES (YEAR='01JUN2005'D, LIB=nn)
%DATES (YEAR='01JUL2005'D, LIB=oo)
%DATES (YEAR='01AUG2005'D, LIB=pp)
%DATES (YEAR='01SEP2005'D, LIB=qq)
%DATES (YEAR='01OCT2005'D, LIB=rr)
%DATES (YEAR='01NOV2005'D, LIB=ss)
%DATES (YEAR='01DEC2005'D, LIB=tt)
%DATES (YEAR='01JAN2006'D, LIB=uu)
%DATES (YEAR='01FEB2006'D, LIB=vv)
%DATES (YEAR='01MAR2006'D, LIB=ww)
%DATES (YEAR='01APR2006'D, LIB=xx)
%DATES (YEAR='01MAY2006'D, LIB=yy)
%DATES (YEAR='01JUN2006'D, LIB=zz)
%DATES (YEAR='01JUL2006'D, LIB=aaa)
%DATES (YEAR='01AUG2006'D, LIB=bbb)
%DATES (YEAR='01SEP2006'D, LIB=ccc)
%DATES (YEAR='01OCT2006'D, LIB=ddd)
%DATES (YEAR='01NOV2006'D, LIB=eee)
%DATES (YEAR='01DEC2006'D, LIB=fff)
%DATES (YEAR='01JAN2007'D, LIB=ggg)
%DATES (YEAR='01FEB2007'D, LIB=hhh)
%DATES (YEAR='01MAR2007'D, LIB=iii)
%DATES (YEAR='01APR2007'D, LIB=jjj)
%DATES (YEAR='01MAY2007'D, LIB=kkk)
%DATES (YEAR='01JUN2007'D, LIB=lll)
%DATES (YEAR='01JUL2007'D, LIB=mmm)
%DATES (YEAR='01AUG2007'D, LIB=nnn)
%DATES (YEAR='01SEP2007'D, LIB=ooo)
%DATES (YEAR='01OCT2007'D, LIB=ppp)
%DATES (YEAR='01NOV2007'D, LIB=qqq)
%DATES (YEAR='01DEC2007'D, LIB=rrr)
%DATES (YEAR='01JAN2008'D, LIB=sss)
%DATES (YEAR='01FEB2008'D, LIB=ttt)
%DATES (YEAR='01MAR2008'D, LIB=uuu)
%DATES (YEAR='01APR2008'D, LIB=vvv)
%DATES (YEAR='01MAY2008'D, LIB=www)
%DATES (YEAR='01JUN2008'D, LIB=xxx)
%DATES (YEAR='01JUL2008'D, LIB=yyy)
%DATES (YEAR='01AUG2008'D, LIB=zzz)
%DATES (YEAR='01SEP2008'D, LIB=aaaa)
%DATES (YEAR='01OCT2008'D, LIB=bbbb)
%DATES (YEAR='01NOV2008'D, LIB=cccc)
%DATES (YEAR='01DEC2008'D, LIB=dddd)
%DATES (YEAR='01JAN2009'D, LIB=eeee)
%DATES (YEAR='01FEB2009'D, LIB=ffff)
%DATES (YEAR='01MAR2009'D, LIB=gggg)
%DATES (YEAR='01APR2009'D, LIB=hhhh)
%DATES (YEAR='01MAY2009'D, LIB=iiii)
%DATES (YEAR='01JUN2009'D, LIB=jjjj)
%DATES (YEAR='01JUL2009'D, LIB=kkkk)
%DATES (YEAR='01AUG2009'D, LIB=llll)
%DATES (YEAR='01SEP2009'D, LIB=mmmm)
%DATES (YEAR='01OCT2009'D, LIB=nnnn)
%DATES (YEAR='01NOV2009'D, LIB=oooo)
%DATES (YEAR='01DEC2009'D, LIB=pppp)
%DATES (YEAR='01JAN2010'D, LIB=qqqq)
%DATES (YEAR='01FEB2010'D, LIB=rrrr)
%DATES (YEAR='01MAR2010'D, LIB=ssss)
%DATES (YEAR='01APR2010'D, LIB=tttt)
%DATES (YEAR='01MAY2010'D, LIB=uuuu)
%DATES (YEAR='01JUN2010'D, LIB=vvvv)
%DATES (YEAR='01JUL2010'D, LIB=wwww)
%DATES (YEAR='01AUG2010'D, LIB=xxxx)
%DATES (YEAR='01SEP2010'D, LIB=yyyy)
%DATES (YEAR='01OCT2010'D, LIB=zzzz)
%DATES (YEAR='01NOV2010'D, LIB=aaaaa)
%DATES (YEAR='01DEC2010'D, LIB=bbbbb)
%DATES (YEAR='01JAN2011'D, LIB=ccccc)
%DATES (YEAR='01FEB2011'D, LIB=ddddd)
%DATES (YEAR='01MAR2011'D, LIB=eeeee)
%DATES (YEAR='01APR2011'D, LIB=fffff)
%DATES (YEAR='01MAY2011'D, LIB=ggggg)
%DATES (YEAR='01JUN2011'D, LIB=hhhhh)
%DATES (YEAR='01JUL2011'D, LIB=iiiii)
%DATES (YEAR='01AUG2011'D, LIB=jjjjj)
%DATES (YEAR='01SEP2011'D, LIB=kkkkk)
%DATES (YEAR='01OCT2011'D, LIB=lllll)
%DATES (YEAR='01NOV2011'D, LIB=mmmmm)
%DATES (YEAR='01DEC2011'D, LIB=nnnnn)
%DATES (YEAR='01JAN2012'D, LIB=ooooo)
%DATES (YEAR='01FEB2012'D, LIB=ppppp)
%DATES (YEAR='01MAR2012'D, LIB=qqqqq)
%DATES (YEAR='01APR2012'D, LIB=rrrrr)
%DATES (YEAR='01MAY2012'D, LIB=sssss)
%DATES (YEAR='01JUN2012'D, LIB=ttttt)
%DATES (YEAR='01JUL2012'D, LIB=uuuuu)
%DATES (YEAR='01AUG2012'D, LIB=vvvvv)
%DATES (YEAR='01SEP2012'D, LIB=wwwww)
%DATES (YEAR='01OCT2012'D, LIB=xxxxx)
%DATES (YEAR='01NOV2012'D, LIB=yyyyy)
%DATES (YEAR='01DEC2012'D, LIB=zzzzz)
%DATES (YEAR='01JAN2013'D, LIB=aaaaaa)
%DATES (YEAR='01FEB2013'D, LIB=bbbbbb)
%DATES (YEAR='01MAR2013'D, LIB=cccccc)
%DATES (YEAR='01APR2013'D, LIB=dddddd)
%DATES (YEAR='01MAY2013'D, LIB=eeeeee)
%DATES (YEAR='01JUN2013'D, LIB=ffffff)
%DATES (YEAR='01JUL2013'D, LIB=gggggg)
%DATES (YEAR='01AUG2013'D, LIB=hhhhhh)
%DATES (YEAR='01SEP2013'D, LIB=iiiiii)
%DATES (YEAR='01OCT2013'D, LIB=jjjjjj)
%DATES (YEAR='01NOV2013'D, LIB=kkkkkk)
%DATES (YEAR='01DEC2013'D, LIB=llllll)




data post.final; set post.TRYa
post.TRYb
post.TRYc
post.TRYd
post.TRYe
post.TRYf
post.TRYg
post.TRYh
post.TRYi
post.TRYj
post.TRYk
post.TRYl
post.TRYm
post.TRYn
post.TRYo
post.TRYp
post.TRYq
post.TRYr
post.TRYs
post.TRYt
post.TRYu
post.TRYv
post.TRYw
post.TRYx
post.TRYy
post.TRYz
post.TRYaa
post.TRYbb
post.TRYcc
post.TRYdd
post.TRYee
post.TRYff
post.TRYgg
post.TRYhh
post.TRYii
post.TRYjj
post.TRYkk
post.TRYll
post.TRYmm
post.TRYnn
post.TRYoo
post.TRYpp
post.TRYqq
post.TRYrr
post.TRYss
post.TRYtt
post.TRYuu
post.TRYvv
post.TRYww
post.TRYxx
post.TRYyy
post.TRYzz
post.TRYaa
post.TRYbb
post.TRYcc
post.TRYdd
post.TRYee
post.TRYff
post.TRYgg
post.TRYhh
post.TRYii
post.TRYjj
post.TRYkk
post.TRYll
post.TRYmm
post.TRYnn
post.TRYoo
post.TRYpp
post.TRYqq
post.TRYrr
post.TRYss
post.TRYtt
post.TRYuu
post.TRYvv
post.TRYww
post.TRYxx
post.TRYyy
post.TRYzz
post.TRYaaa
post.TRYbbb
post.TRYccc
post.TRYddd
post.TRYeee
post.TRYfff
post.TRYggg
post.TRYhhh
post.TRYiii
post.TRYjjj
post.TRYkkk
post.TRYlll
post.TRYmmm
post.TRYnnn
post.TRYooo
post.TRYppp
post.TRYqqq
post.TRYrrr
post.TRYsss
post.TRYttt
post.TRYuuu
post.TRYvvv
post.TRYwww
post.TRYxxx
post.TRYyyy
post.TRYzzz
post.TRYaaaa
post.TRYbbbb
post.TRYcccc
post.TRYdddd
post.TRYeeee
post.TRYffff
post.TRYgggg
post.TRYhhhh
post.TRYiiii
post.TRYjjjj
post.TRYkkkk
post.TRYllll
post.TRYmmmm
post.TRYnnnn
post.TRYoooo
post.TRYpppp
post.TRYqqqq
post.TRYrrrr
post.TRYssss
post.TRYtttt
post.TRYuuuu
post.TRYvvvv
post.TRYwwww
post.TRYxxxx
post.TRYyyyy
post.TRYzzzz
post.TRYaaaaa
post.TRYbbbbb
post.TRYccccc
post.TRYddddd
post.TRYeeeee
post.TRYfffff
post.TRYggggg
post.TRYhhhhh
post.TRYiiiii
post.TRYjjjjj
post.TRYkkkkk
post.TRYlllll
post.TRYmmmmm
post.TRYnnnnn
post.TRYooooo
post.TRYppppp
post.TRYqqqqq
post.TRYrrrrr
post.TRYsssss
post.TRYttttt
post.TRYuuuuu
post.TRYvvvvv
post.TRYwwwww
post.TRYxxxxx
post.TRYyyyyy
post.TRYzzzzz
post.TRYaaaaaa
post.TRYbbbbbb
post.TRYcccccc
post.TRYdddddd
post.TRYeeeeee
post.TRYffffff
post.TRYgggggg
post.TRYhhhhhh
post.TRYiiiiii
post.TRYjjjjjj
post.TRYkkkkkk
post.TRYllllll
;run;
于 2013-03-21T22:42:11.987 に答える