با استفاده از تابع 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) توجه داشته باشید.

توسط پژوهشگر در 201 روز قبل ساعت 03:33
دسته بندی ها: MySQL MySQL for beginner
reyhaneh در 201 روز قبل ساعت 06:03

برای پیدا کردن رکوردهای قدیمی‌تر از ۳۰ روز، از WHERE created_at < NOW() - INTERVAL 30 DAY استفاده کنید. قبل از DELETE، با یک SELECT خروجی را بررسی کنید تا مطمئن شوید شرط درست عمل می‌کند. بهتر است روی ستون created_at ایندکس وجود داشته باشد و از تراکنش برای جلوگیری از حذف ناخواسته استفاده کنید. همچنین توجه کنید که منطقه زمانی سرور (UTC یا محلی) روی مقادیر created_at تأثیر می‌گذارد.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری