質問: テーブルAにはstorecode deadlinflg テーブルBにはstorecode month、monthdeadline 上記のカラムをそれぞれ持っています やりたいことは storecodeで紐づけて テーブルAのwhere句が'1'だったら、テーブルBのmonthを見て1か月後の日付をmonthdeadlineに入れる 、'2'だったら、2か月後の日付にUPDATEしたいです。 例)1:deadlinflg:1 month'2018-02-28’ だったら monthdeadline:'2018-03-31’ 2:deadlinflg:2 month'2018-01-15’ だったら monthdeadline:'2018-03-15’ 3:deadlinflg:2 month'2018-02-28’ だったら monthdeadline:'2018-04-30’ month、monthdeadline 日付の形式は'YYYY-MM-DD'です。 以下クエリ update tb set monthdeadline=month + (ta.deadlingflg || ' months')::interval from ta where ta.storecode=tb.storecode 困ったこと 上記だと deadlinflg:2 month'2018-01-15’ だったら monthdeadline:'2018-03-15’ OK 1:deadlinflg:1 month'2018-06-30’ だったら monthdeadline:'2018-07-30’ NG 2:deadlinflg:2 month'2018-02-28’ だったら monthdeadline:'2018-04-28’ NG 3:deadlinflg:2 month'2018-11-30’ だったら monthdeadline:'2018-01-30’ NG 1、2、3だと月末日が入らず「1か月後」の日にちが入ってしまいます。 単純に「deadlinflg:2 month'2018-02-28’ だったら monthdeadline:'2018-04-28’」だったら ::interval + '2 days'とかにすれば埋まりますがそれだと 他の日付に影響してしまいます・・ また、month の中身は中締めの「15日」と月末締めの「月末日」が入っているので どうすれば、中締め日に影響せず月末日を入れることが出来ますか?
回答: PostgreSQLの環境がないのでヒントだけ。PostgreSQLで月初と月末の日付を計算する