برای هر سفارش در جدول 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 باشد.

توسط پژوهشگر در 221 روز قبل ساعت 01:18
دسته بندی ها: MySQL MySQL for beginner
arash در 221 روز قبل ساعت 13:48

این رویکرد ساده و کارآمد است اما برای صحت داده‌ها باید معیارهای تحویل را دقیق‌تر کنید. برای تأیید تحویل قطعی می‌توانید با 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))) استفاده کنی.

گزارش

1 پاسخ

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

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