PDA

View Full Version : سوال: بررسی یک مقدار بین دوتاریخ در table



sadaf_
شنبه 02 مهر 1390, 12:36 عصر
با سلام
من در table دو تا تاریخ دارم
تاریخ شروع و تاریخ پایان
حالا در برنامه ام یک تاریخ می دم
چطوری می تونم بفهمم که تاریخ وارد شده آیا بین تاریخ شروع و پایان هست یا نه؟
شبیه between می شه اما برعکس ولی کاربردش رو نمی دونم ؟
ممنون

nilmil_nil
شنبه 02 مهر 1390, 16:16 عصر
سلام
شما تاریخ رو به صورت روز ماه سال جدا کن بعد با یه شرط مشخص کن که آیا روز بین اون روز تاریخ شروع و پایان هست یا نه و همینطور برای ماه و سال ...
اگه ممتوجه نشدین بگین راهنمایی بیشتر می کنم

sadaf_
شنبه 02 مهر 1390, 16:56 عصر
نه مشکل من این نیست
با مثال شاید شفاف تر بگم
من در برنامه ام یک تاریخ می زنم 01/07/1390
و در یک رکورد table دو تا تاریخ دارم
یکیش 01/01/1390
و دیگری
29/12/1390
حالا من می خوام چک کنم که آیا 01/07/1390 که هنوز هم ذخیره نشده بین 01/01/1390 و 29/12/1390 هست یا نه
از کمکتون ممنونم

s3rv3r
شنبه 02 مهر 1390, 19:20 عصر
به ميلادي تبديل كني خيلي راحت ميشيا

nilmil_nil
شنبه 02 مهر 1390, 19:58 عصر
خووب منم همینو گفتم دیگه اون تاریخ 01/07/1390 رو به صورت 01 07 90 جدا کنید و تاریخ های دیگه هم همینطور
حالا روز و ماه سال رو تاریخ اول رو با دو تا محدوده تاریخ چک کنید و بعد دیگه بقیه شو خودتون بلدید

faravaghi
یک شنبه 03 مهر 1390, 00:07 صبح
سلام،
اینم میشه استفاده کنید:
SELECT * FROM Table_Name WHERE column BETWEEN '1300/01/01' AND '1390/12/29'
یا حق

fan2005
یک شنبه 03 مهر 1390, 00:19 صبح
وقتی طول رشته ها ثابت هست میتوتی مثل عدد آنها را مقایسه کنی

sadaf_
دوشنبه 04 مهر 1390, 10:45 صبح
نه مشکل من این نیست
با مثال شاید شفاف تر بگم
من در برنامه ام یک تاریخ می زنم 01/07/1390
و در یک رکورد table دو تا تاریخ دارم
یکیش 01/01/1390
و دیگری
29/12/1390
حالا من می خوام چک کنم که آیا 01/07/1390 که هنوز هم ذخیره نشده بین 01/01/1390 و 29/12/1390 هست یا نه
از کمکتون ممنونم

با سپاس از توجهتون
من هنوز مشکبم حل نشده
من فقط می خوام ببینم تاریخ 01/07/1390 جزء 01/01/1390 تا 29/12/1390 هست یا نه
همین

sobaisobai
دوشنبه 04 مهر 1390, 11:19 صبح
دادا منم همین مشکل رو دارم ولی هنوز جوابی نگرفتم
اینم پستمه
http://barnamenevis.org/showthread.php?306459-%D8%B3%D9%88%D8%A7%D9%84-%D9%81%D9%88%D8%B1%DB%8C-%D8%AF%D8%B1-%D8%B1%D8%A7%D8%A8%D8%B7%D9%87-%D8%A8%D8%A7-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE%D8%9F

nilmil_nil
دوشنبه 04 مهر 1390, 11:37 صبح
با سلام
این کد کار میکنه
تست کنید
اگه بازم مشکلی بود بگید. من که تستش کردم جواب داد.فقط شاید بخواد یه خورده دستکاریش کنید

string[] date1 = txt1.Text.Split('/');
string[] date2 = txt2.Text.Split('/');
string[] date3 = txt3.Text.Split('/');

if ((int.Parse(date3[0])) >= (int.Parse(date1[0])) && (int.Parse(date3[0]) <= (int.Parse(date2[0]))))
{
if ((int.Parse(date3[1])) >= (int.Parse(date1[1])) && (int.Parse(date3[1])) <= (int.Parse(date2[1])))
{
if ((int.Parse(date3[2])) >= (int.Parse(date1[2])) && (int.Parse(date3[2])) <= (int.Parse(date2[2])))
{
MessageBox.Show("OK !");
}
else
{
MessageBox.Show("Not OK !");
}
}

}
}

RIG000
دوشنبه 04 مهر 1390, 11:47 صبح
اگه سوالی بود بپرس . شما بسته به اینکه چگونه تاریخ رو در بانکت داری دیگه نیازی به این نداری با / باشه نباشه و ... بسته به اینکه چطوری ذخیره شده می تونی اطلاعاتو بگیری . دقیقا چیزی رو که لازم دارید نوشتم. امیدوارم مشکلتون حل شه.

RIG000
دوشنبه 04 مهر 1390, 11:57 صبح
دادا منم همین مشکل رو دارم ولی هنوز جوابی نگرفتم
اینم پستمه
http://barnamenevis.org/showthread.php?306459-%D8%B3%D9%88%D8%A7%D9%84-%D9%81%D9%88%D8%B1%DB%8C-%D8%AF%D8%B1-%D8%B1%D8%A7%D8%A8%D8%B7%D9%87-%D8%A8%D8%A7-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE%D8%9F
شما هم از این استفاده کن . این دستور همه تاریخا هایی که بین دو تاریخ داری رو در میاره به همراه اطلاعات اضافی .اگه شما بین این دوتاریخی تاریخ هایی که در بانکت هست رو بهت نشون میده . الا اگه همه رو ثبت کرده باشی هه رو نشون میده . دیگه سرچ دیگه. .
موفق باشین

string strq = String.Format("select * from Ersalidakheli where (Tarikh>='{0}'and Tarikh<='{1}')", txtProNet1.Text, txtProNet2.Text);

gwbasic
دوشنبه 04 مهر 1390, 12:30 عصر
اینم یه ExtensionMethod


public static class MyExMethod
{
public static bool Between(this string b, string start, string end)
{
int startDay = Convert.Toint32(start.Split('\\')[0]);
int startMonth = Convert.Toint32(start.Split('\\')[1]);
int startYear = Convert.Toint32(start.Split('\\')[2]);

int endDay = Convert.Toint32(end.Split('\\')[0]);
int endMonth = Convert.Toint32(end.Split('\\')[1]);
int endYear = Convert.Toint32(end.Split('\\')[2]);

int thisDay = Convert.Toint32(b.Split('\\')[0]);
int thisMonth = Convert.Toint32(b.Split('\\')[1]);
int thisYear = Convert.Toint32(b.Split('\\')[2]);

if (thisDay >= startDay && thisDay <= endDay)
if (thisMonth >= startMonth && thisMonth <=endMonth)
if (thisYear >= startYear && thisYear <= endYear)
return true;

return false;

}
}


نحوه استفادش هم اینطوریه:


MessageBox.Show(@"21\7\1390".Between(@"1\6\1390", @"20\7\1390").ToString());

sobaisobai
دوشنبه 04 مهر 1390, 22:58 عصر
دوست عزیز ممنون
دستت درد نکنه
مشکلم حل شد