نوشته شده توسط
Mansoor92
من میخام یک کوئری بنویسیم که از جدول داخل دیتابیس بر اساس دوتکسباکس تاریخ جستجو کنه و هررکوردی بین این دو تاریخ هست رو براساس تاریخ داخل دیتابیس برگردونه(مثلا هر تاریخی که بین "1392/10/05 تا 1392/10/17" هست) و تاریخ من بصورت nvarchar داخل دیتابیس ذخیره میشه
چونکه تاریخ شما در دیتابیس به صورت "1392/10/05" هست
باید تو دیتابیستون یه View(جدول مجازی) بنویسید که این رشته "1392/10/05" را به "13921005" تبدیل کنه
من از این کدها برا کارم استفاده کردم و جواب هم گرفتم
به قسمت CAST(REPLACE(dbo.tblStats.TarikhKamel, '/', '') AS int) AS tarikh
توجه کنید :
و سپس یک کوئری مثل همانی که دوستمون در بالا گفتند برا ویویتان مینویسید و تمامی رکوردهای مورد نظر را پیدا میکنید:
این هم یک نمونه از ایجاد ویو:
CREATE view [dbo].[gozareshDarsSaateMotaleh] (userid, tarikh,dars,ModatDarRooz,Minuttes)
as
SELECT tblStats.UserID, CAST(Replace(tblStats.TarikhKamel,'/','') AS int) AS Tarikh,
tblGozaresh.NameDarse,
--Cast 00:00:17
CAST(
--covert complete date to only time [00:00:17.0000000 ]
CONVERT(TIME,
--Complete date [1900-01-01 00:00:17.000]
DATEADD(ss,
--total second [17]
SUM(
--total second as only int
--2
--6
--3
--3
--3
DATEDIFF(ss,'00:00:00',
--00:00:02
--00:00:06
--00:00:03
--00:00:03
--00:00:03
tblGozaresh.ModatMotale
)
)
,'00:00:00')
,8)
AS NVARCHAR(8))
AS ModatDarRooz,
--0 minute
DATEDIFF(MINUTE,'00:00:00',
--Complete date [1900-01-01 00:00:17.000]
DATEADD(ss,
--total second [17]
SUM(
--total second as only int
--2
--6
--3
--3
--3
DATEDIFF(ss,'00:00:00',
--00:00:02
--00:00:06
--00:00:03
--00:00:03
--00:00:03
tblGozaresh.ModatMotale
)
)
,'00:00:00')
) AS Minutes
FROM tblGozaresh
INNER JOIN tblStats ON tblGozaresh.StaticID = tblStats.StaticID
--where UserID=2--@userid
--and NameDarse='Hesaban'
GROUP BY userid,CAST(Replace(tblStats.TarikhKamel,'/','') AS int),tblGozaresh.NameDarse