با استفاده از تابع DATE_SUB در MySQL، لیستی از سفارشهایی که طی 30 روز گذشته در جدول orders با ستون created_at ثبت شدهاند را بازیابی کنید.
14.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 04:02 0.0
برای حل این سوال از MySQL و تابع DATE_SUB همراه با NOW() یا CURDATE() استفاده کنید؛ بهعنوان مثال شرط WHERE created_at >= DATE_SUB(NOW(), INTERVAL 30 DAY) یا WHERE DATE(created_at) >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) مناسب است. نکته: اگر created_at شامل قسمت زمان است از NOW() استفاده کنید و برای بهرهوری بهتر از اندیس ستون created_at بهره ببرید و در صورت نیاز از BETWEEN برای بازهها استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای بازیابی سفارشهای ۳۰ روز گذشته از شرطی مانند created_at >= DATE_SUB(NOW(), INTERVAL 30 DAY) استفاده کنید؛ اگر ستون فقط تاریخ دارد میتوان از DATE_SUB(CURDATE(), INTERVAL 30 DAY) بهره برد. از فراخوانی تابع روی ستون (مثل DATE(created_at)) خودداری کنید چون باعث از کار افتادن اندیس میشود و پرسوجو کند میشود. برای دقت زمانی و مسائل ناحیهی زمانی بهتر است از تایمزون واحد (مثلاً UTC) برای ستون و مقایسهها استفاده یا در صورت نیاز از CONVERT_TZ بهره ببرید. برای بیان بازه میتوانید BETWEEN را استفاده کنید یا الگوی نیمهباز created_at >= start AND created_at < end که از مرزها بهصورت صحیح محافظت میکند.
گزارش