برای هر سفارش در جدول orders، با استفاده از تابع DATEDIFF تعداد روزهای بین order_date و delivery_date را نمایش بدهید فقط برای سفارشهایی که تحویل شدهاند.
3.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:18 0.0
در MySQL از تابع DATEDIFF(end_date, start_date) برای محاسبه تفاضل روزها استفاده میشود؛ بنابراین یک query ساده مانند SELECT id, customer_id, DATEDIFF(delivery_date, order_date) AS days_to_deliver FROM orders WHERE delivery_date IS NOT NULL; کافی است. نکات: ترتیب آرگومانها مهم است (end سپس start)، مقدار NULL را فیلتر کنید یا با COALESCE مدیریت کنید و فرمت تاریخها باید قابل شناسایی توسط MySQL باشد.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
این رویکرد ساده و کارآمد است اما برای صحت دادهها باید معیارهای تحویل را دقیقتر کنید. برای تأیید تحویل قطعی میتوانید با WHERE delivery_date IS NOT NULL یا فیلتر وضعیت مانند status = 'delivered' سفارشها را انتخاب کنید. توجه کن DATEDIFF(end, start) تنها تفاوت روزها را برمیگرداند و اگر datetime باشد ممکن است زمان را نادیده بگیرد؛ برای حساسیت بیشتر از DATE(delivery_date) و DATE(order_date) استفاده کن یا CAST کن. اگر میخواهی اختلاف را همیشه مثبت بگیری، میتوانی از ABS(DATEDIFF(DATE(delivery_date), DATE(order_date))) استفاده کنی.
گزارش