12月から1月へのリンク
apacheログ集計プログラムを作っています。
全体の流れとしては、ログを指定したテキストファイルに書き出し、
それを読み込み、適切な形に直し、HTMLテーブルにいれて表示、という感じです。
その中の適切な形に直すところなのですが、
select sysdate,
to_char(add_months(to_date($yearmonth,'YYYYMM'),-1),'YYYYMM') as LAST_MONTH,
to_char(add_months(to_date($yearmonth,'YYYYMM'),+1),'YYYYMM') as NEXT_MONTH
from テーブル名
で200812や
200901といった日付をとってきています。
(データはしっかり入ってきます。)
このデータを利用し、
$last_monthには200812
$next_monthには200901のように入っていると仮定し、
リンクを作りますと、
# 先月のリンク
my $href_last_month = undef;
if ($last_month) {
my $last_month_year = substr($last_month,0,4);
my $last_month_month = substr($last_month,4,2);
$href_last_month = qq(<a href="$THIS?year=$last_month_year&month=$last_month_month"><<</a>);
}
# 来月のリンク
my $href_next_month = undef;
if (($next_month) && ($next_month <= $thismonth)) {
my $next_month_year = substr($next_month,0,4);
my $next_month_month = substr($next_month,4,2);
$href_next_month = qq(<a href="$THIS?year=$next_month_year&month=$next_month_month">>></a>);
}
のようになりました。
しかし、これをブラウザで表示させても、
先月(=200811へのリンク)へのリンクは表示されますが、
来月(=200801へのリンク)が表示されません。
200812(当月、今いる画面)に
#来月のリンク部分 で+1をしても、200813となってしまい、
エラーになるからだと思います。
どなたか、200812の画面で、
今表示されない200901へのリンクボタン=来月へのリンクボタンを表示できるようにするには
どうしたらいいか教えてくださいませ。
ちなみに200812や200901などは、自動でとってきており、
一番はじめのindex.cgiの画面には必ず当月がとれてきます(今日index.cgiをアクセスすれば、200901のログ集計結果ページが出ます。
このとき、200902はまだ訪れておりませんから、来月へのリンクボタン>>は表示されません。
先月への<<のみ表示されます、先月へは問題なくリンクできます。
13月を1月としてくれる、select文でのadd_month関数を使っているのに。。。
初心者なものでここでギブです。。お助けください。
補足
ご回答ありがとうございました。 興味深くさらに考えさせられます。 補足質問させて下さい。 つまり、"this"、"next でも"this (year's)" 、"next (year's)"ということでしょうか。 これは西暦の2010年、2011年といったように一年単位でとらえていることですね。 すると、2012年の1月時点で、2012年の2月を表現する場合は"this February"となるかと思います。 どちらの時点も2012年の一年間に属していますので。 しかし、oxfordで"next"を引くと、"(used without the) next Monday, week, summer, year, etc. the Monday, week, etc. immediately following"となっています。 つまりimmediately following ですので、結果、表現は"next February"となり、上記の解釈と矛盾が生じるように思います。 どう考えればよいのでしょうか?