最近這幾天項目需要好久不寫SQL語句了都有寫忘了,新需求是定時刪除數據,以防數據太多.
剛開始寫的時候也是各種碰釘子,遇到了各種問題,也在網上找了一些操作語句,但是有些在SQLite裏面不能用,然後開始自己想啊
這些是在網上找的,基本全是刪除用的
// String a="DELETE FROM Student WHERE time('now', '-7 day') >= date(CreatedTime)";
// String b="DELETE FROM Student WHERE time('now', '-2 hours') >= date(CreatedTime)";
// String c="delete from Student where (TO_DAYS(NOW()) - TO_DAYS(time))>=7";
// String d="delete from Student WHERE TO_DAYS(NOW()) - TO_DAYS(time) <= 7";
// String f="DELETE FROM Student WHERE EVENT_TIME IS NULL OR DATE(EVENT_TIME) <= DATE(DATE_SUB(NOW(),INTERVAL 7 DAY))";
// String e="DELETE FROM Student where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(time);";
// String g="DELETE FROM Student where TO_DAYS(NOW())-TO_DAYS(time)>1;";
// String h="DELETE FROM Student WHERE date('now', '-7 day') >= date(time);";
// String i="DELETE FROM Student WHERE julianday('now') - julianday(time) >= 7;";
可能在別的數據庫裏面可以用到吧
廢話也不多說了直接上代碼了
查詢語句:
select * from 表名where 字段名>='2017-06-01' and 字段<='2017-06-05';
刪除語句:
DELETE FROM 表名 WHERE 時間的字段名 <'2019-04-11 14:45:00';
爲什麼最後面的時間那樣寫呢,因爲我時間格式化爲 yyyy-MM-dd HH:mm:ss
這樣的
刪除N天前的
DELETE FROM 表名 WHERE 時間的字段名 <' "+getOldDate(N)+" ';
getOldDate這個方法是獲取N天前的日期
public static String getOldDate(int distanceDay) {
SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date beginDate = new Date();
Calendar date = Calendar.getInstance();
date.setTime(beginDate);
date.set(Calendar.DATE, date.get(Calendar.DATE) - distanceDay); //加號爲N天前
// date.set(Calendar.DATE, date.get(Calendar.DATE) + distanceDay); //加號爲N天后
Date endDate = null;
try {
endDate = dft.parse(dft.format(date.getTime()));
} catch (ParseException e) {
e.printStackTrace();
}
return dft.format(endDate);
}
最後還是問了以爲大佬,他給了我靈感,然後寫出來了當時的心情啊
甚至還有點想
如果這些東西對大家有用處點個讚唄