PDA

View Full Version : نوع داده ای برای ساعت در SQL Server 2005



mzamani
یک شنبه 30 مهر 1385, 08:26 صبح
با سلام به همه دوستان
من می خواهم پردازش هایی بر روی نوع داده هایی به فرمت ساعت و دقیقه (مثلا 16:45) داشته باشم یعنی با این فرمت از ورودی بخوانم و جمع و تفریق و روی آنها انجام داده و در خروجی نشان دهم
مشکل من این است که sql server در دات نت 2005 نوع داده ای برای زمان بدون تاریخ ندارد
لطفا مرا راهنمایی کنید:متفکر:

yasak5
یک شنبه 30 مهر 1385, 10:06 صبح
سلام،
می تونی تاریخ رو همیشه ثابت در نظر بگیری (مثلا 2000/01/01) و اون وقت جمع و یا تفریق ساعت و دقیقه درست کار خواهد کرد.
مثلا مقدار دو تا از رکوردها می تونه ایجوری باشه:


2000/01/01 12:35

2000/01/01 22:45

majid_afra222
یک شنبه 30 مهر 1385, 10:29 صبح
سلام
احتیاج به نوع داده نیست فقط کافیه با استفاده از دستور CONVERT تاریخ رو به فرمتی که میخواید بدست بیارید و نمایش بدید، روی جمع و تفریق هم که DATEADD با داده نوع تاریخ کار می کنه چون فقط ساعت یا دقیقه رو کم و زیاد می کنید بعد دوباره با استفاد ه از CONVERT فقط بخش زمان رو نشون میدید. ورود داده رو هم که دوست عزیزمون گفتن بخش تاریخ رو ثابت در نظر بگیرید.


CONVERT(varchar(20), date, 108) --Return hh:mm:ss
DATEADD(hh, 2, date)
CONVERT(varchar(20), date, 114) --Return hh:mi:ss:mmm(24h)

mzamani
یک شنبه 30 مهر 1385, 10:36 صبح
با تشکر به خاطر راهنمایی تون
اما من چطوری تاریخ را ثابت بگیرم
ببینید من دو تا ستون ساعت شروع کار و ساعت پایان کار از نوع datetime در sql دارم که کاربر از طریق textbox در interface برنامه مقادیر آنها را وارد می کند بعد باید میزان کارایی او و... را حساب کنم
لطفا دقیقا بگویید چه کار کنم، در ضمن از دستئوراتی که با تابع convert:متعجب:نوشتید زیاد سر در نیاوردم
در (vb.net 2005) چطوری باید بنویسم؟ :متفکر: :متفکر: :متفکر: :متفکر:

yasak5
یک شنبه 30 مهر 1385, 10:46 صبح
سلام،
بعد از گرفتن ساعت و دقیقه که کاربر وارد کرده یه تاریخ بچسبون سره متغیری که ساعت و دقیقه رو نگه می داره بعدش توی بانک اطلاعاتی Insert و یا edit کن.
موقع استخراج و نمایش هم که باید اون تاریخ ثابت رو حذف کنی و ساعت و دقیقه رو به کاربر نشون بدی.

majid_afra222
یک شنبه 30 مهر 1385, 11:21 صبح
با تشکر به خاطر راهنمایی تون
اما من چطوری تاریخ را ثابت بگیرم
ببینید من دو تا ستون ساعت شروع کار و ساعت پایان کار از نوع datetime در sql دارم که کاربر از طریق textbox در interface برنامه مقادیر آنها را وارد می کند بعد باید میزان کارایی او و... را حساب کنم
لطفا دقیقا بگویید چه کار کنم، در ضمن از دستئوراتی که با تابع convert:متعجب:نوشتید زیاد سر در نیاوردم
در (vb.net 2005) چطوری باید بنویسم؟ :متفکر: :متفکر: :متفکر: :متفکر:
سلام
اون دستورات رو تو SQL Server اجرا می کنی و بخشی از sp خواهد بود که کار با تاریخ رو انجام میدن.
تو vb مقدار ساعت اول و دوم رو میگیری به sp موجود روی SQL Server میفرستی.
اینم sp مورد نظر که تفاوت ساعت شروع تا پایان رو میده.


create proc p1
@time1 varchar(10) --ورودی ساعت اول
,@time2 varchar(10) --ورودی ساعت دوم
as
begin
declare @t1 datetime --تاریخ
declare @t2 datetime --تاریخ
--تبدیل به تاریخ می کنیم
select @t1 = convert(datetime, '1/1/2001 ' + @time1)
, @t2 = convert(datetime, '1/1/2001 ' + @time2)

select datediff(hh, @t1 , @t2) --تفاوت ساعت شروع تا پایان
end
--اینم فراخوانی
exec p1 '10:20', '16:15'
--اینم خروجی
6