برای جدول orders که ستونهای order_id، order_date و delivery_date دارد، یک پرسوجو بنویسید که order_id و تعداد روزهای بین order_date و delivery_date را بهصورت days_between نمایش دهد و فقط ردیفهایی که delivery_date و order_date تهی نیستند و days_between منفی نیستند را بهترتیب صعودی days_between بازگرداند.
3.0 بازدید آخرین ویرایش در 223 روز قبل ساعت 01:56 0.0
برای حل این مسئله از تابع MySQL DATEDIFF استفاده کنید: DATEDIFF(delivery_date, order_date) تعداد روز بین دو تاریخ را برمیگرداند. در بخش WHERE ردیفهایی که delivery_date یا order_date NULL هستند را حذف کنید و با شرط DATEDIFF(...) >= 0 منفیها را فیلتر کنید. در انتها با ORDER BY days_between ASC نتایج را مرتب کنید. نکات: اگر نیاز به جایگزینی تاریخهای تهی دارید میتوانید از COALESCE استفاده کنید، و برای نمایش خواناتر نام ستون محاسبهشده را با AS days_between تعیین کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای محاسبه تفاوت روز between order_date و delivery_date، استفاده از DATEDIFF با فرض تهی نبودن هر دو ستون گزینه مناسب است. استفاده از COALESCE برای جایگزینی تاریخهای تهی میتواند از ایجاد NULL در محاسبه جلوگیری کند و کار با دادهها را کارآمدتر کند. در شرط WHERE نیز باید وجود NULL را بهطور صریح فیلتر کنیم و همچنین از شرط DATEDIFF(...) >= 0 برای جلوگیری از مقادیر منفی استفاده کنیم تا فقط ردیفهای معتبر باقی بمانند. نامگذاری نتیجه با AS days_between خوانایی را افزایش میدهد و بهاینترتیب امکان استفاده در ORDER BY days_between ASC را ساده میکند.
گزارش