MySQL հարցում ջնջե՞լ 30 օրից հին բոլոր տողերը:
30 օրից ավելի հին բոլոր տողերը ջնջելու համար անհրաժեշտ է օգտագործել DELETE-ը INTERVAL-ով: Օգտագործեք < now(), այսինքն՝ օպերատորից պակաս՝ ընթացիկ ամսաթվից առաջ բոլոր գրառումները ստանալու համար:
Եկեք նախ ստեղծենք աղյուսակ.
mysql> create table DemoTable
-> (
-> UserMessage text,
-> UserMessageSentDate date
-> );
Query OK, 0 rows affected (0.59 sec)
Տեղադրեք որոշ գրառումներ աղյուսակում՝ օգտագործելով insert հրամանը.
mysql> insert into DemoTable values('Hi','2019-06-01');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('Hello','2019-07-02');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('Awesome','2019-05-04');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('Good','2019-01-10');
Query OK, 1 row affected (0.35 sec)
Ցուցադրել բոլոր գրառումները աղյուսակից՝ օգտագործելով select հայտարարությունը.
mysql> select *from DemoTable;
Արդյունք
+-------------+---------------------+
| UserMessage | UserMessageSentDate |
+-------------+---------------------+
| Hi | 2019-06-01 |
| Hello | 2019-07-02 |
| Awesome | 2019-05-04 |
| Good | 2019-01-10 |
+-------------+---------------------+
4 rows in set (0.00 sec)
30 օրից հին բոլոր տողերը ջնջելու համար հետևյալ հարցումն է.
mysql> delete from DemoTable where UserMessageSentDate < now() - interval 30 DAY;
Query OK, 3 rows affected (0.11 sec)
Եկեք ևս մեկ անգամ ստուգենք աղյուսակի գրառումները.
mysql> select *from DemoTable;
Արդյունք
+-------------+---------------------+
| UserMessage | UserMessageSentDate |
+-------------+---------------------+
| Hello | 2019-07-02 |
+-------------+---------------------+
1 row in set (0.00 sec)