PDA

View Full Version : چجوری میتونم چندتا ساعت رو باهم جمع بزنم ؟



pure_love
شنبه 04 آذر 1396, 18:55 عصر
سلام بچه ها
من یه برنامه حسابداری نوشتم که هر کاربر میاد و ساعت ورود و خروج خودشو ذخیره میکنه! درون sql 2014 ذخیره میشه و تو دیتاگریدویو نمایش میده.
مثلا برنامه ثبت کرده یه کاربر به مدت 4:05:30 ساعت تو اداره بوده و کاربر بعدی به مدت .... !
حالا میخام این ساعت ها رو باهم جمع بزنه !چوری کد بنویسم که این ساعت ها رو جمع بزنه و بهم بگه آخر ماه هر کاربر رو چند ساعت ثبت کرده؟

خیلی لازممه بچه ها لطفا راهنماییم کنید فوریه
تشکر

parvizwpf
شنبه 04 آذر 1396, 20:43 عصر
https://stackoverflow.com/questions/19535718/sum-total-time-in-sql-server
میتونید به ثانیه تبدیل و جمع بزنید
SELECT StudentID,
StudentName,
sum( DATEPART(SECOND, [time]) + 60 *
DATEPART(MINUTE, [time]) + 3600 *
DATEPART(HOUR, [time] )
) as 'TotalTime'
FROM WorkNote
GROUP BY StudentID, StudentName

pure_love
یک شنبه 05 آذر 1396, 00:36 صبح
https://stackoverflow.com/questions/19535718/sum-total-time-in-sql-server
میتونید به ثانیه تبدیل و جمع بزنید
SELECT StudentID,
StudentName,
sum( DATEPART(SECOND, [time]) + 60 *
DATEPART(MINUTE, [time]) + 3600 *
DATEPART(HOUR, [time] )
) as 'TotalTime'
FROM WorkNote
GROUP BY StudentID, StudentName

میشه بیشتر راهنمایی کنید دوست عزیز؟ چجوری کد ها استفاده کنم؟
قبل که ثبت دیتابیس بشه یا بعدا که با فرمت ساعت ذخیره شدن جمع کنم؟

parvizwpf
یک شنبه 05 آذر 1396, 20:23 عصر
شما در بالا گفتید در دیتابیس ثبت کرده پس من در نظر گرفتم که شما در دیتابیس فیلدی دارید از جنس time
حالا با کوئری بالا شما میتونید مقادیر زمان ها رو جمع بزنید اون بخش sum داره اینکار رو انجام میده

pure_love
دوشنبه 06 آذر 1396, 12:29 عصر
شما در بالا گفتید در دیتابیس ثبت کرده پس من در نظر گرفتم که شما در دیتابیس فیلدی دارید از جنس time
حالا با کوئری بالا شما میتونید مقادیر زمان ها رو جمع بزنید اون بخش sum داره اینکار رو انجام میده

ببینید این اطلاعات دیتابیس منه :
147154

حالا من کد بالارو بزارم ! این ساعت هارو باهم جمع میکنه ؟و جمع همه ساعت هارو به همین صورت با ساعت و دقیقه و ثانیه میده؟

parvizwpf
دوشنبه 06 آذر 1396, 21:18 عصر
این رو برای مثال اجرا کنید خودتون میفهمید:
create table temp
(
tt time null
)

insert into temp(tt) values ('12:12:12'),('15:15:15')

SELECT CAST(t.time_sum/3600 AS VARCHAR(2)) + ':'
+ CAST(t.time_sum%3600/60 AS VARCHAR(2)) + ':'
+ CAST(((t.time_sum%3600)%60) AS VARCHAR(2))
FROM ( SELECT SUM(DATEDIFF(S, '00:00:00', tt)) AS time_sum
FROM temp) t