با استفاده از تابع TO_DAYS در MySQL، تعداد روزهای گذشته از ستون order_date تا امروز را محاسبه کنید و فقط ردیفهایی را نمایش دهید که بیش از 30 روز از تاریخ سفارششان گذشته است.
1.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 01:52 0.0
برای حل این مسئله از تابع TO_DAYS برای تبدیل تاریخها به عدد روز استفاده کنید و تفاوت را با تاریخ امروز مقایسه کنید؛ مثلاً WHERE TO_DAYS(CURDATE()) - TO_DAYS(order_date) > 30 یا معادل دیگر WHERE TO_DAYS(order_date) < TO_DAYS(CURDATE()) - 30. این کوئری در MySQL اجرا میشود و توجه داشته باشید که مقادیر NULL در order_date ممکن است نتیجه را تحت تأثیر قرار دهند؛ در صورت نیاز از شرط IS NOT NULL استفاده کنید یا از تابع DATEDIFF برای مقایسه مستقیم روزها بهره ببرید اما در این سوال الزامی است از TO_DAYS استفاده شود.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای محاسبه تعداد روزهای گذشته از order_date تا امروز با TO_DAYS، تفاوت TO_DAYS(CURDATE()) و TO_DAYS(order_date) را محاسبه میکنیم. برای نمایش فقط ردیفهایی که بیش از 30 روز از تاریخ سفارششان گذشته است، از WHERE TO_DAYS(CURDATE()) - TO_DAYS(order_date) > 30 استفاده کنید یا معادل آن WHERE TO_DAYS(order_date) < TO_DAYS(CURDATE()) - 30. توجه کنید که مقادیر NULL در order_date میتواند نتیجه را باطل کند؛ بنابراین از ORDER_DATE IS NOT NULL استفاده کنید یا مقدار را با COALESCE مدیریت کنید. همچنین با وجود الزامی بودن استفاده از TO_DAYS، اجرای این سؤال روی دیتابیس بزرگ ممکن است از کارایی اندیس روی order_date جلوگیری کند، پس بهینهسازی با اندیس مناسب یا محدود کردن فیلترها پیشنهاد میشود.
گزارش