以下のような DELETE
文を記述すれば、指定した条件を満たす SQL になります。
DELETE 文
DELETE FROM USER
WHERE REG_TIME < SYSDATE - #{deleteDays}
AND UPD_TIME < SYSDATE - #{deleteDays}
解説
-
SYSDATE - #{deleteDays}
-
SYSDATE
は Oracle で現在日時を取得する関数。 -
SYSDATE - N
でN
日前の日時を取得できる。 -
#{deleteDays}
は MyBatis のプレースホルダーで、Java からint
型の変数を渡せる。
-
-
REG_TIME < SYSDATE - #{deleteDays} AND UPD_TIME < SYSDATE - #{deleteDays}
-
REG_TIME
とUPD_TIME
の両方がdeleteDays
日より前なら削除対象。
-
MyBatis の Mapper 記述例
<delete id="deleteOldUsers">
DELETE FROM USER
WHERE REG_TIME < SYSDATE - #{deleteDays}
AND UPD_TIME < SYSDATE - #{deleteDays}
</delete>
Java の呼び出し例
int deleteDays = 30; // 30日以上前のデータを削除
userMapper.deleteOldUsers(deleteDays);
この SQL で、REG_TIME
と UPD_TIME
の両方が deleteDays
日以上前のレコードのみ削除できます。