PDA

View Full Version : جستجو بر اساس دو تکسباکس تاریخ



Mansoor92
دوشنبه 23 دی 1392, 13:41 عصر
سلام


من میخام یک کوئری بنویسیم که از جدول داخل دیتابیس بر اساس دوتکسباکس تاریخ جستجو کنه و هررکوردی بین این دو تاریخ هست رو براساس تاریخ داخل دیتابیس برگردونه(مثلا هر تاریخی که بین "1392/10/05 تا 1392/10/17" هست) و تاریخ من بصورت nvarchar داخل دیتابیس ذخیره میشه


ممنون میشم راهنمایی کنید

boveiryghasem
دوشنبه 23 دی 1392, 15:04 عصر
این میشه کوئریی که باید توی SqlCommand باید بنویسی:

"SELECT * FROM testDataBase WHERE Mydate BETWEEN '" +textBox1.Text+"' AND '" +textBox2.Text+ "' order by Mydate"

fmehrvarzi
دوشنبه 23 دی 1392, 15:29 عصر
من میخام یک کوئری بنویسیم که از جدول داخل دیتابیس بر اساس دوتکسباکس تاریخ جستجو کنه و هررکوردی بین این دو تاریخ هست رو براساس تاریخ داخل دیتابیس برگردونه(مثلا هر تاریخی که بین "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

Mansoor92
دوشنبه 23 دی 1392, 16:02 عصر
این میشه کوئریی که باید توی SqlCommand باید بنویسی:

"SELECT * FROM testDataBase WHERE Mydate BETWEEN '" +textBox1.Text+"' AND '" +textBox2.Text+ "' order by Mydate"

سلام
ممنونم که پاسخ دادید


حالا اگر با انتیتی نوشته باشم چی میشه؟؟


ممنونم