با استفاده از تابع INTERVAL در MySQL، یک پرسوجو بنویسید که تمام رکوردهای جدول orders را که مقدار ستون created_at آنها بیش از 30 روز قدیمی است انتخاب یا حذف کند.
7.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:33 0.0
برای حل میتوانید از ساختارهایی مانند WHERE created_at < NOW() - INTERVAL 30 DAY یا WHERE created_at < DATE_SUB(NOW(), INTERVAL 30 DAY) استفاده کنید. مطمئن شوید ستون created_at از نوع DATETIME یا TIMESTAMP است و قبل از اجرای DELETE ابتدا با SELECT نتایج را بررسی کنید. نکات عملی: روی created_at ایندکس قرار دهید تا کارایی بالا رود، پیش از حذف بکاپ بگیرید یا از تراکنش (START TRANSACTION ... COMMIT/ROLLBACK) استفاده کنید و به تنظیمات منطقه زمانی سرور (UTC vs local) توجه داشته باشید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای پیدا کردن رکوردهای قدیمیتر از ۳۰ روز، از WHERE created_at < NOW() - INTERVAL 30 DAY استفاده کنید. قبل از DELETE، با یک SELECT خروجی را بررسی کنید تا مطمئن شوید شرط درست عمل میکند. بهتر است روی ستون created_at ایندکس وجود داشته باشد و از تراکنش برای جلوگیری از حذف ناخواسته استفاده کنید. همچنین توجه کنید که منطقه زمانی سرور (UTC یا محلی) روی مقادیر created_at تأثیر میگذارد.
گزارش