• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

پیدا کردن زمان روشن بودن خودرو - فوری

gavbandy

Registered User
تاریخ عضویت
15 فوریه 2005
نوشته‌ها
364
لایک‌ها
3
سلام
یک تیبل داریم با این مشخصات
id , state , date
state ==> 0 yani khamosh va 1 yani roshan
date ham zamin hast ke in mashin roshan bode be va in shekli zakhire shode masalan 1374292176

حالا یک کوئری میخوام بزنم و بهم بگه مدت زمانهایی که این ماشین روشن بوده چقدر است مثلا باید بگه 10 دقیقه خاموش بوده و 20 دقیقه روشن بوده
یک کوئری هم میخوام که بهم بگه این ماشین دقیقا چه زمانهایی از وضعیت خاموش به روشن تغییر پیدا کرده و برعکس
مثلا ساعت 10:11 دقیقه روشن شده تا 10:30 دقیقه
و دوباره 10:30 خاموش شده تا 10:40 دقیقه
و....

کسی میتونه بهم کمک کنه؟
خیلی فوری هست
 

razavix

Registered User
تاریخ عضویت
24 فوریه 2013
نوشته‌ها
199
لایک‌ها
23
محل سکونت
تهران
به نظر اگر فقط با کوئری بخواهید این رو دربیارید سخت میشه. پیشنهاد می کنم با PHP زمانها را استخراج کنید و محاسبات را در آنجا انجام دهید.
 

razavix

Registered User
تاریخ عضویت
24 فوریه 2013
نوشته‌ها
199
لایک‌ها
23
محل سکونت
تهران
با فرض اینکه نام جدول شما tbl باشد:
select id,state, FROM_UNIXTIME(date) from tbl
با کوئری بالا، عدد داخل فیلد date رو به صورت استاندارد نمایش میده و چون هر ردیف جدول نمیش دهنده یک وضعیت خاموش یا روشن است. می توانید بفید که چه زمانی خاموش یا روشن بوده است.
 

homayo0on

Registered User
تاریخ عضویت
25 آگوست 2011
نوشته‌ها
555
لایک‌ها
620
با این جدول نمیشه کاری که میخواید رو بکنید، چون فقط آخرین زمان روشن بودن تو این جدول ذخیره میشه و خروجی که میشه با کوئری گرفت نهایتاً بین زمانی که تو دیتابیس ثبت شده تا زمان حال هست.
شما باید اول مشکخص کنید هدف این کار چیه، متدها و راه حل هایی که در شرایط مختلف وجود داره متفاوته
ولی در ساده ترین حالت باید یه column از نوع text به این table اضافه کنید و اطلاعات روشن شدن و خاموش شدن رو بهش اضافه کنید و مابقی فرایند رو هم با کمک PHP باید انجام بدید
 

razavix

Registered User
تاریخ عضویت
24 فوریه 2013
نوشته‌ها
199
لایک‌ها
23
محل سکونت
تهران
با این جدول نمیشه کاری که میخواید رو بکنید، چون فقط آخرین زمان روشن بودن تو این جدول ذخیره میشه و خروجی که میشه با کوئری گرفت نهایتاً بین زمانی که تو دیتابیس ثبت شده تا زمان حال هست.
ولی در ساده ترین حالت باید یه column از نوع text به این table اضافه کنید و اطلاعات روشن شدن و خاموش شدن رو بهش اضافه کنید و مابقی فرایند رو هم با کمک PHP باید انجام بدید
دوست عزیز فکر می کنم فیلد state وضعیت خاموش و روشن بودن موتور را در جدول ذخیره می کند
 

homayo0on

Registered User
تاریخ عضویت
25 آگوست 2011
نوشته‌ها
555
لایک‌ها
620
دوست عزیز فکر می کنم فیلد state وضعیت خاموش و روشن بودن موتور را در جدول ذخیره می کند
درسته حق با شماست @rezavix ولی state مشخص میکنه در چه زمانی موتور خاموش شده؟
برفرض مثال من الان آنلاین شم تو مقدار date میریزه که در time x من لاگین کردم و state رو میگذاره 1، حالا من خارج میشم، state میشه 0
خب دیتایی که شما تو بانک اطلاعاتیتون دارید محدود به زمان ورود من هست که در نهایت میتونید حساب کنید اگر state برابر 0 بود time فعلی رو منهای time ذخیره شده تو date بکنه
همین
 

razavix

Registered User
تاریخ عضویت
24 فوریه 2013
نوشته‌ها
199
لایک‌ها
23
محل سکونت
تهران
مثالی که شما زدید مربوط به لوگین شدن است و نمیتوان با مثال این خودرو مقایسه کرد. اگر در هر تغیر وضعیت یک ردیف insert شود، می توان اطلاعات مورد نیاز را استخراج کرد
 

homayo0on

Registered User
تاریخ عضویت
25 آگوست 2011
نوشته‌ها
555
لایک‌ها
620
معذرت میخوام من به عنوان توجه نکرده بودم
با این حال مثالی که برای لاگین زدم برای همین روشن بودن خودرو هم صدق میکنه
شما زمان روشن شدن خودرو رو دارید، وضعیت فعلی خودرو رو هم دارید
ولی یک فاکتور رو فراموش کردید اون هم زمان خاموش شدن خودرو
 

razavix

Registered User
تاریخ عضویت
24 فوریه 2013
نوشته‌ها
199
لایک‌ها
23
محل سکونت
تهران
در این مثال اگر در هنگام روشن شدن یک رکورد insert شود و در هنگام خاموش شدن هم یک رکورد insert شود، می توان اطلاعات مورد نیاز را استخراج کرد.
ولی در مثال لوگین، فقط در هنگام لوگین، رکورد insert میشود. (و یا حداکثر، آخرین فعالیت کاربر در زمانی که آنلاین بوده ثبت می شود.)
 
بالا