めもめも のーと

ハマったこととか、覚えたこととか

PostgreSQLで加算した日付を更新する件

INSERTやUPDATEで、とあるカラムに「今日から1ヵ月後の日付を更新したい」、といった要件があったのですが、 文法エラー多発でハマったので、備忘録としてメモ。

環境

PostgreSQL 9.3

こんなテーブルに対して、start_atを今月1日、end_atを3ヵ月後といった更新をしたい場合。

       列        |             型              |    修飾語     
-----------------+-----------------------------+---------------
 id              | integer                     | not null
 name            | character(256)              | 
 price           | integer                     | 
 start_at        | timestamp without time zone | 
 end_at          | timestamp without time zone | 


INSERT INTO mytable VALUES(
1,
'NAME', 
1000,
DATE_TRUNC('month', current_timestamp),
DATE_TRUNC('month', current_timestamp) + INTERVAL '3month',
);

要は、DATE_TRUNC関数と INTERVALを使ってうまいことやるという話です。

連日小ねたで失礼しました(