PDA

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



aleas2
پنج شنبه 16 خرداد 1392, 00:53 صبح
دوستان بنده
تو بانک دوتا فیلد ساختم از نوع رشته یکی برای ساعت یکی برای تاریخ که به شمسی وارد میکنم
1392/02/03
به این شکل و زمان هم
14:02:40

خب حالا دستور select چطور بنویسم اونایی که مثلا از تاریخ 1392/2/3 و زمان 02:20:30 تا 1392/3/3 و زمان 13:20:00
نمایش بده؟


و یه سوال دگه هم دارم همینجا میپرسم دستوری وجود نداره تو رشته مثلا متن
ash khs lsh
هسته هرچی s و فضای خای هسته حذف کنه؟
که تببدیل بشه به
ahkhlh

parvizwpf
پنج شنبه 16 خرداد 1392, 02:18 صبح
وقتی داری اینطور مقایسه ها رو انجام میدی همیشه یه فیلد تاریخ میلادی از نوع datetime بزار تا با اون به مقایسه تاریخ و زمان بپردازی . در کنارش هم یه فیلد تاریخ شمسی باشه فقط برای نمایش .

دومی هم بهتره یه نگاهی به تابع replace بندازی.

aleas2
پنج شنبه 16 خرداد 1392, 02:27 صبح
خب میشه بگین اگر تاریخ میلادی باشه چطور جستجو کنم ؟
و اینکه چطور تاریخ مورد نظر بازه تاریخ مورد نظر توسط کاربر به چه شکل از ورودی بگیرم و دستور select چی بنوییسم؟

اگر ممکنه روش استفاده از دستور replace هم بگین

خواهشا زیر دیپلم توضیح بدین ممنون

parvizwpf
پنج شنبه 16 خرداد 1392, 02:44 صبح
ای یه نوع که با رشته تاریخی هم کار میکنه:

SELECT * FROM Schedules WHERE Start >= DateValue('04/10/2001') AND End <= DateValue('11/10/2001')




این هم برای انواع datetime با عبارت between

USE AdventureWorks2012; GO SELECT BusinessEntityID, RateChangeDate FROM HumanResources.EmployeePayHistory WHERE RateChangeDate BETWEEN '20011212' AND '20020105';




اینم replace:

update table set path = replace(path, 'oldstring', 'newstring') where path = 'oldstring'


برای گرفتن تاریخ میتونی بطور ساده دو تا تکست بزاری دیگه. خودت راه حل دیگه ای داری؟

aleas2
پنج شنبه 16 خرداد 1392, 02:58 صبح
این هم برای انواع datetime با عبارت between

USE AdventureWorks2012; GO SELECT BusinessEntityID, RateChangeDate FROM HumanResources.EmployeePayHistory WHERE RateChangeDate BETWEEN '20011212' AND '20020105';






برای گرفتن تاریخ میتونی بطور ساده دو تا تکست بزاری دیگه. خودت راه حل دیگه ای داری؟
ممنون کل این دستور باید استفاده کنم برای جستجو ! نام جدول کدوم قسمت کد باید وارد کنم؟
این کدی دادین فقط جستجو بر اساس تاریخه؟و اینکه کاربر حتما باید به میلادی وارد کنه شمسی جواب نمیده؟

parvizwpf
پنج شنبه 16 خرداد 1392, 03:01 صبح
دقیقا کدتو بزار اینجا تا طبق کدت جلو بریم. الان با چند سوالی مواجه میشیم.

aleas2
پنج شنبه 16 خرداد 1392, 03:15 صبح
کد خاصی نداره ببینین دوتا جستجو هست
1-جستجو میخوام که دوتا تاریخ بگیره بین دوتاریخ جستجو کنه
2-و یک جستجو دگه میخوام بین یک تاریخ و زمان و یک تاریخ و زمان دگه جستجو کنه
نام جدول tabel1 و فیلد تاریخ date1 و date2

و روی فرم سه تا تکست برای یک تاریخ txty1 ,txtm1,txtd1
و برای وارد کردن تاریخ دومtxty2 ,txtm2,txtd2

و تکست ورود زمان اول txthh1,txtmm1,txtss1
برای وارد کردن زمان دوم txthh2,txtmm2,txtss2

بیشتر میخوام جستجو براساس تاریخ شمسی باشه یعنی کاربر تاریخ شمسی وارد کنه ولی تو جدول datetime میلدی هست
اگر شمسی نمیشه همون میلادی
اینم کد
String connect = (@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\db_institute.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
SqlConnection conn = new SqlConnection(connect);
conn.Open();
string cmd= "دستور جستجو اینجا وارد کن";
SqlDataAdapter da = new SqlDataAdapter(cmd, conn);
DataSet ds = new DataSet();
da.Fill(ds);
Griduser.DataSource = ds;
Griduser.DataBind();

صباح فتحی
پنج شنبه 16 خرداد 1392, 03:25 صبح
between date1 and date2

parvizwpf
پنج شنبه 16 خرداد 1392, 03:39 صبح
خب یه عالمه کار داری ببین بهتره بری یه سمپل ببینی. تو وقتی تاریخ شمسی رو از کاربر میگیری تبدیلش میکنی به میلادی بعد میای با اون فیلدهای میلادی مقایسشون میکنی. برای همین گفتم میخوای دنگ و فنگی نداشته باشی از لحاظ مقایسه میلادی کار کن. کاربر کلا شمسی رو کار داره و تو تو کد با میلادی کار میکنی الان بهتره توی کدت هم از پارمترها برای پاس دادن مقادیر ورودی کاربر استفاده کنی .