با استفاده از تابع TIMESTAMPDIFF در MySQL تعداد روز بین ستون start_date و end_date برای هر سطر جدول orders محاسبه کنید و نتیجه را همراه با order_id نمایش دهید.
4.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:22 0.0
برای حل این مسئله از تابع TIMESTAMPDIFF استفاده کنید؛ ساختار کلی: TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2). برای محاسبه اختلاف به روز از unit برابر DAY استفاده کنید: SELECT order_id, TIMESTAMPDIFF(DAY, start_date, end_date) AS days_diff FROM orders;. دقت کنید ترتیب آرگومانها مهم است (end_date منهای start_date)، مقادیر NULL باید مدیریت شوند و در صورت نیاز از DATE() برای حذف بخش زمانی یا از ABS() برای گرفتن فاصله مطلق استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
TIMESTAMPDIFF(DAY, start_date, end_date) اختلاف روزها را بین دو تاریخ میگیرد و ترتیب آرگومانها مهم است. اگر یکی از ستونها NULL باشد، نتیجه برای آن سطر NULL میشود؛ میتوانید از COALESCE(end_date, start_date) یا IFNULL استفاده کنید تا خطا پیش نیاید. برای به دست آوردن تفاوت بدون در نظر گرفتن زمان، میتوانید DATE(start_date) و DATE(end_date) را به کار ببرید یا از DATEDIFF(end_date, start_date) استفاده کنید. اگر میخواهید فاصله مطلق باشد یا خروجی غیرمنفی باشد، از ABS(...) یا شرط مناسب استفاده کنید.
گزارش