با استفاده از تابع 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 برای بازه‌ها استفاده کنید.

توسط پژوهشگر در 198 روز قبل ساعت 04:02
دسته بندی ها: MySQL MySQL for beginner
nima در 198 روز قبل ساعت 04:02

برای بازیابی سفارش‌های ۳۰ روز گذشته از شرطی مانند 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 که از مرزها به‌صورت صحیح محافظت می‌کند.

گزارش

1 پاسخ

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

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