با استفاده از تابع SEC_TO_TIME در MySQL، برای هر user_id در جدول sessions که ستون duration_seconds (مدت به ثانیه) دارد، مجموع ثانیهها را محاسبه کرده و حاصل را به فرمت HH:MM:SS نمایش دهید.
10.0 بازدید آخرین ویرایش در 199 روز قبل ساعت 23:32 0.0
برای حل این مسئله از MySQL و توابع مجموعهای و زمانی استفاده کنید؛ کافی است SUM(duration_seconds) را برای هر user_id محاسبه کرده و نتیجه را داخل SEC_TO_TIME قرار دهید: SELECT user_id, SEC_TO_TIME(SUM(duration_seconds)) AS total_time FROM sessions GROUP BY user_id; توجه داشته باشید که مقدار زمان خروجی در بازهٔ مجاز نوع TIME قرار دارد و در صورت نیاز به نمایش روزها باید مجموع ثانیهها را به صورت دستی به روز و باقیماندهٔ ساعت/دقیقه/ثانیه تبدیل کنید (مثلاً با FLOOR(SUM/86400) برای روزها و MOD/SUM برای باقیمانده).
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای نمایش مجموع ثانیهها به صورت HH:MM:SS میتوانید SUM(duration_seconds) را به SEC_TO_TIME بدهید تا خروجی بهصورت زمانی نمایش یابد. توجه کنید که نوع TIME بازهی محدودی دارد (حدود ±838:59:59) و اگر مجموع ثانیهها از این بازه بیشتر شود خروجی ممکن است نامعتبر یا NULL شود؛ در این حالت روزها را با FLOOR(SUM/86400) جدا کرده و باقیمانده را با SEC_TO_TIME(MOD(SUM,86400)) فرمت کنید. برای دقت و کارایی بهتر مجموعها را با نوع عددی مناسب (مثلاً BIGINT) محاسبه کنید و در صورت حجم زیاد از تجمیع قبلی یا ایندکس مناسب استفاده نمایید.
گزارش