PDA

View Full Version : جمع فیلد زمان SQL



mhmoein
یک شنبه 26 اردیبهشت 1389, 21:49 عصر
با سلام در بانک یک فیلد دارم به نام SUM_TIME که مجموع زمانهای مرخصی روزانه یک فرد را مشخص می کنه . حالا میخوم این مقدار رو با هم جمع کنم و در یک تکست باکس نشون بدم. دوستان عزیز می تونن کدی برای این موضوع به من بدن ممنون می شم.
نمی خوام تو Datagrideview این کار رو انجام بدم فقط می خوام اطلاعات از بانک خونده بشه و پس از محاسبه در یک تکست باکس نمایش داده بشه ؟

group45
یک شنبه 26 اردیبهشت 1389, 22:16 عصر
سلام
این الان به ذهنم رسید(شاید بشه شاید نشه):
یه متغیر از نوع date time تعریف کن (همینجاشو شک دارم)
بعد با sqldatareader تا زمانی که read میکنه اونارو با متغیر زمانیت جمع کن(اینجاشو مطمئنم)
اگه جواب گرفتی حتما یه خبری بده!!!!!!!

mhmoein
یک شنبه 26 اردیبهشت 1389, 22:38 عصر
سلام
این الان به ذهنم رسید(شاید بشه شاید نشه):
یه متغیر از نوع date time تعریف کن (همینجاشو شک دارم)
بعد با sqldatareader تا زمانی که read میکنه اونارو با متغیر زمانیت جمع کن(اینجاشو مطمئنم)
اگه جواب گرفتی حتما یه خبری بده!!!!!!!

میشه بشتر توضیح بدی ؟ درست متوجه نشدم آخه من تازه به #C رو آوردم ؟

mmd2009
دوشنبه 27 اردیبهشت 1389, 01:04 صبح
اگر می خوای اطلاعات یک فیلد رو با هم جمع کنی که همه از نوع int هستند از دستور زیر استفاده کن




cmd.commandtext="select sum (name_fild) from name_jadval ";

mhmoein
دوشنبه 27 اردیبهشت 1389, 01:38 صبح
نه دوست عزیز اطلاعات این فیلد به صورت varchar ذخیره شده البته با فرمت ( مثلا: 12:20 )به این صورت ذخیره شده اند. می خواستم اطلاعات چنین فیلدی رو با هم جمع کنه .

mhmoein
دوشنبه 27 اردیبهشت 1389, 10:28 صبح
دوستان نمی تونه کسی منو راهنمایی کنه تو این موضوع. البته اگر با یک قطعه کد باشه ممنون می شم.

mohitlog
دوشنبه 27 اردیبهشت 1389, 10:45 صبح
بهتر نیست تایپشو به int تبدیل کنی تا بهتر بتونی از توابع از پیش ساخته شده استفاده کنی؟

خب وقتی sum هست چرا میخای نونو دوره سرت بچرخونی بعد بخوری؟

mhmoein
دوشنبه 27 اردیبهشت 1389, 13:12 عصر
اگر این کار رو انجام بدم انوقت می شه به صورت صحیح جمع مقادیر رو به صورت صحیح پیدا کرد ؟

ببین من الان دارم تو پروژه ام تو فرم داره زمان شروع مرخصی رو می گیره و زمان پایان مرخصی رو هم دریافت می کنه و در Maskbox مدت زمان مرخصی رو نمایش می ده.
الان من تو محاسبه این مورد مشکلی ندارم.

آیا با تبدیل این دیتاتایپ به مشکل بر نمی خورم ؟

taghvajou
دوشنبه 27 اردیبهشت 1389, 14:03 عصر
با تبدیلش به اینت به مشکل برمیخوره چون پایه اعداد دهه و پایه زمان شصت

اگر فقط مدت زمان برات مهمه تعداد ثانیه ها رو ذخیره کن بعد دیگه خیلی راحت میتونی هر بلایی که دلت میخواد سرش بیاری

rk1983xx
چهارشنبه 04 مرداد 1391, 09:21 صبح
اگه DateTime ذخیره کنه و موقع محاسبه از جدول بخونه و تبدیل به اینت کنه و بعد محاسبه انجام بده و دوباره از اینت به DateTime تبدیل کنه جواب میده یا اینم دور سر گردوندنه ؟
منظورم از تبدیل به اینت معادل عددی اون هست (encode و decode کردن متغیر های تاریخ و زمان)

veniz2008
چهارشنبه 04 مرداد 1391, 10:30 صبح
سلام،میتونی بصورت زیر عمل کنی:
فرض کن ساعت شروع مرخصی : 10:40 و ساعت پایان مرخصی 11:20 باشه. حالا تنها کاری که میکنی اینه که با استفاده از substring مقدار ساعت(هم شروع و هم پایان) رو بدست میاری و تبدیل به عدد میکنی و بعدش ساعت پایان رو منهای ساعت شروع میکنی(این مقدار همیشه نامنفی خواهد بود) و در 60 ضرب میکنی(براساس دقیقه حساب کردم). حالا دوباره با استفاده از تابع substring مقادیر دقیقه شروع و پایان رو بدست میاری و دقیقه پایان رو منهای دقیقه شروع میکنی (این مقدار ممکنه مثبت یا منفی باشه).حالا هر دو مقداری رو که محاسبه کردی با هم جمع کن تا کل ساعت مرخصی شخص بدست بیاد. من کدهایی رو که لازم داری میزارم:
برای محاسبه ساعت شروع و پایان:

int h1 =Convert.ToInt32(date1.SubString(0,2));

int h2 =Convert.ToInt32(date2.SubString(0,2));

int totalh = (h2 - h1)*60;
برای محاسبه دقیقه هم بصورت زیر عمل کن:

int m1 =Convert.ToInt32(date1.SubString(3,2));

int m2 =Convert.ToInt32(date2.SubString(3,2);

int totalm = m2 - m1;
در نهایت داریم :

int TotalMorakhasi = totalh + totalm

ali_habibi1384
چهارشنبه 04 مرداد 1391, 10:36 صبح
آقا نميخواد خودت رو اينقدر گيج كني اينجوري بخواي بري جلو صدتا جواب ديگه هم بدن نميتوني بفهمي چيكار كني.
راه حل:
توي اس كيو ال يه تابع بنويس كه مقاديري كه بصورت تايم ذخيره كرده به دقيقه برات تبديل كنه خروجي اين تابع بايد عدد صحيح باشه.بعد از اون ميتوني با استفاده از دستور Sum اونها رو با هم جمع كني يعني جمع مقادير رو به صورت دقيقه داري.حالا با يه تابع كوچولو به فرم دقيقه تبديلش ميكني.:چشمک: