• 締切済み

日付演算で月を加算したい場合

日付演算で月を加算したい場合 例として、下記構成で顧客訪問日に所定の月数を加算して、次回の訪問予定日を表示したいです。 データベース1 テーブル1 = 主キー:顧客番号(int),訪問日(date) INTERVALを使えばいいのでしょうか? また顧客ごとに訪問間隔が違うのですが、その場合どうしたらいいでしょうか? SQL例をご教示いただければ幸いです。

みんなの回答

回答No.3

こんばんは 訪問間隔月数はintでいいです。 ただ一つだけ注意が必要ですが、INTERVALで月を足した場合、月末が自動調整されます。 例えば、訪問日=2010-3-31 訪問間隔月数=1で計算すると、次回訪問日=2010-4-30になります。 (4月31日は存在しないので・・・) これでよければ、 SELECT 顧客番号, 訪問日 + INTERVAL テーブル2.訪問間隔月数 month FROM テーブル1 INNER JOIN テーブル2 ON テーブル1.顧客番号 = テーブル2.顧客番号 になります。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>所定の月数を加算して たしかにintervalで可能ですが、月というのは長さが不定であり、月末日の調整なども 必要になるので、単純にintervalするのは運用上危険です。 また、訪問日ということですので、祝日などの例外処理も必要になると思います。 ロジックをきっちり固めるところからはじめてください >次回の訪問予定日 正確にやりたいなら自動計算などさせず、数か月~数年分のスケジュールを あらかじめいれておくことです。

回答No.1

こんばんは >INTERVALを使えばいいのでしょうか? はい。 それでいいです。 >また顧客ごとに訪問間隔が違うのですが・・・ それはどこかのテーブルに入ってるんですか? その場合はJOINして、INTERVALに該当カラムをくっつければいいです。 そうじゃない場合は・・・、厄介ですね。

kkkamxzjp
質問者

お礼

>また顧客ごとに訪問間隔が違うのですが・・・ それはどこかのテーブルに入ってるんですか? その場合はJOINして、INTERVALに該当カラムをくっつければいいです。 ありがとうございます。 新たにテーブル2をデータベース1に追加しようと思います。 テーブル2 = 主キー:顧客番号(int),訪問間隔月数(int?) この場合だと訪問間隔月数はintで問題ないでしょうか? intで大丈夫なら、恐縮ですがSQL例をご教示頂けないでしょうか? よろしくお願いします。