-
رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
سلام به همه ی دوستان.
خیلی ها با مشکل جستجو از طریق تاریخ مشکل دارن و هر روز هم پست هایی با همین عناوین تو انجمن میبینیم.
من خودم از روش زیر استفاده میکنم. امیدوارم دیگه کسی درباره این مشکل پستی نزنه.
ابتدا using زیر رو در بالای پروژه اضافه میکنیم
using System.Globalization;
سپس تاریخ رو بصورت شمسی با کد زیر بدست میاریم. تا فرمت yyyy/mm/dd حفظ بشه
PersianCalendar PerCal = new PersianCalendar();
string Year, Day, Month;
Year = PerCal.GetYear(DateTime.Now).ToString();
Month = PerCal.GetMonth(DateTime.Now).ToString("D2");
Day = PerCal.GetDayOfMonth(DateTime.Now).ToString("D2");
date = Year + "/" + Month + "/" + Day;
خوب حالا مقدار متغیر date رو در فیلد جدولمون میریزیم
تذکر: نوع فیلدی که میخوایم تاریخ رو توش ذخیره کنیم رو nvarchar تعریف کنید
حالا واسه جستجو بین دو تاریخ از کوئری زیر استفاده میکنیم
SELECT * FROM TBL_Name Where FildeDateName Between 'date1' and 'date2'
واسه جستجو تاریخ های بعد از تاریخی که میخوایم
SELECT * FROM TBL_Name Where FildeDateName > 'date'
واسه جستجو تاریخ های قبل از تاریخی که میخوایم
SELECT * FROM TBL_Name Where FildeDateName < 'date'
برای جستجو در یک تاریخ خاص
SELECT * FROM TBL_Name Where FildeDateName = 'date'
تذکر: مقدار تاریخ ارسال شده باید با فرمت yyyy/mm/dd ارسال شود
سوال دیگه ای بود در خدمیتم
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
سلام خیلی ممنون
من توی اس کیو ال از فرمتdatetime برای ذخیره انتخاب کردم اما نمی دونم از توی C# چطور میشه با تکس باکس تاریخی که توسط کاربر وارد میشه رو ذخیره کنم.لطفا کمک کنید؟
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
datetime برای ذخیره تاریخ میلادی خوبی و راحت میشه باهاش کار کرد ولی برای شمسی بهتره از nvarchar استفاده کنی
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
امیر جان حالا اگه بخوای تاریخ رو از یه maskedbox بگیری باید چه کار کنیم ؟ یعنی کاربر خودش تاریخ رو وارد کنه مثلا به این صورت 1390/12/01 یا 01/12/1390 ؟
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
نقل قول:
نوشته شده توسط
reza.atashafroz
امیر جان حالا اگه بخوای تاریخ رو از یه maskedbox بگیری باید چه کار کنیم ؟ یعنی کاربر خودش تاریخ رو وارد کنه مثلا به این صورت 1390/12/01 یا 01/12/1390 ؟
هیچ فرقی نمیکنه. من خودمم از maskedbox استفاده میکنم
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
البته بهتره از char(10) برای ذخیره سازی استفاده کنید یا varchar(10) و نیازی به nvarchar نیست.
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
نقل قول:
نوشته شده توسط
npscash
البته بهتره از char(10) برای ذخیره سازی استفاده کنید یا varchar(10) و نیازی به nvarchar نیست.
حتما ی دلیل داره که گفتم nvarchar برو یخورده مطالعه کن تا تفاوت رو ببینی بعد خودت به جواب میرسی که بهتره از کدوم استفاده کنیم :لبخندساده:
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
خیلی ممنون .خیلی وقت بود که دنبال همچین کدی بودم.فقط یه سوال d2چیه و چرا توی yearنذاشتینش؟اگه بخوام تاریخ رو از یه مسک تکست باکس درج کنم تو فیلدم باید چکار کنم ممنون میشم راهنمایی کنید
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
سلام خوشگلم این کوئری هایی که نوشتی به فیلدمون به چشم رشته نگاه نمیکنه ؟
و به صورت رشته بزرگتر و کوچکتر بودن رو درنظر نمیگیره ؟
اگه قرار بود به همین راحتی باشه دیگه چرا نوع داده ی datetime رو میذاشتن ؟
حتما این روش شما یه باگی داره
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
خیلی ممنون .خیلی وقت بود که دنبال همچین کدی بودم.فقط یه سوال d2چیه و چرا توی yearنذاشتینش؟اگه بخوام تاریخ رو از یه مسک تکست باکس درج کنم تو فیلدم باید چکار کنم ممنون میشم راهنمایی کنید
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
d2 یعنی اینکه فیلد ماه و روز رو دو رقمی نشون بده اگر تک رقمی باشه به صورت 05 نشون میده (یعنی این تاریخ 1390/2/5 به صورت 1390/02/05 نوشته بشه)
در مورد سال چون مطمئنا چهار رقم تکمیله پس نیازی نیست
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
ممنون.اگه درجش رو تو یه فیلد جدول بلدین یادم بدین لطفا.
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
نقل قول:
نوشته شده توسط
misagh1370
خیلی ممنون .خیلی وقت بود که دنبال همچین کدی بودم.فقط یه سوال d2چیه و چرا توی yearنذاشتینش؟اگه بخوام تاریخ رو از یه مسک تکست باکس درج کنم تو فیلدم باید چکار کنم ممنون میشم راهنمایی کنید
D2 رو میزاریم که طول اون رشته برابر با 2 حرف بشه و اگه کمتر بود مثلا 2 بود یه صفر به اولش اضافه میکنه و میشه 02
هیچ فرقی نمیکنه من خودمم از مسک میگیرم. تنظیماتشو به صورت 0000/00/00 قرار بده و مقدارشو بریز تو جدول
نقل قول:
نوشته شده توسط
roolinjax
سلام خوشگلم این کوئری هایی که نوشتی به فیلدمون به چشم رشته نگاه نمیکنه ؟
و به صورت رشته بزرگتر و کوچکتر بودن رو درنظر نمیگیره ؟
اگه قرار بود به همین راحتی باشه دیگه چرا نوع داده ی datetime رو میذاشتن ؟
حتما این روش شما یه باگی داره
بله دوست من. دقیقا همین کارو میکنه. داده datetime مختض تاریخ میلادیه و تاریخ 1300 رو قبول نمیکنه. برای رفع این مشکل اگه اشتباه نکنم از sql 2005 به بعد داده datetime2 اومد که این مشکل رو حل کرد. البته من خودم ازش استفاده نمیکنم و به همین صورتی که آموزش دادم استفاده میکنم و تا حالا هیچ مشکلی نداشته.
نقل قول:
نوشته شده توسط
misagh1370
ممنون.اگه درجش رو تو یه فیلد جدول بلدین یادم بدین لطفا.
بفرما
//baraye gereftane tarikh
PersianCalendar PerCal = new PersianCalendar();
string Year, Day, Month;
Year = PerCal.GetYear(DateTime.Now).ToString();
Month = PerCal.GetMonth(DateTime.Now).ToString("D2");
Day = PerCal.GetDayOfMonth(DateTime.Now).ToString("D2");
date = Year + "/" + Month + "/" + Day;
//bbaraye darj kardan dar bank
SqlConnection con = new SqlConnection();
con.ConnectionString = "server=(local);database=Bank_Name;trusted_connect ion=yes";
SqlCommand com = new SqlCommand();
com.Connection = con;
com.CommandText = "insert into tbl_Name (DateShamsi) ";
com.CommandText += "values (@DateShamsi)";
com.Parameters.AddWithValue("@DateShamsi", date);
con.Open();
com.ExecuteNonQuery();
con.Close();
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
عالی بود ممنون.فقط منظور از @DateShamsi
چیه و ما از کجا به برنامه میگیم که مقدار مسک باکس رو توی فیلد بریزه.ببخشید زیاد سوال میپرسم چون میخوام برنامه رو به وبی دات نت بنویسم
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
دوست عزیز این یه پارامتر هست و باید یه چیزی رو که میخوای بجای این تو دستور درجت قرار بدی بنویسی یعنی بجای date مسک تکس باکست رو بنویس البته تکسشو با ویژوال استدیو ننوشتم خودت منظورمو بگیر
com.Parameters.AddWithValue("@DateShamsi", masktexbox.text.tostring());
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
نقل قول:
نوشته شده توسط
amir200h
بله دوست من. دقیقا همین کارو میکنه. داده datetime مختض تاریخ میلادیه و تاریخ 1300 رو قبول نمیکنه. برای رفع این مشکل اگه اشتباه نکنم از sql 2005 به بعد داده datetime2 اومد که این مشکل رو حل کرد. البته من خودم ازش استفاده نمیکنم و به همین صورتی که آموزش دادم استفاده میکنم و تا حالا هیچ مشکلی نداشته.
خوب عزیزم منم حرفم همینه
فرقی نداره میلادی و شمسی بودن مطرح نیست، منظورم اینه که اگر داره درست جواب میده پس برای میلادی هم درست جواب میده پس نوع داده ی datetime واقعا یه نوع داده ی اضافی به شمار میاد "البته به گفته ی شما"
من یه کلاس کامل از توابع مورد نیاز برای محاسبات شمسی ساختم که توی همه ی پروژه هام ازش استفاده می کنم و زندگی راحتی دارم
هیچوقت هم کدنویسی جدیدی برای این قضیه نکردم
توی این کلاس همه چی پیدا میشه و از طرفی خیالم راحته که دارم با نوع داده ی استاندارد خود اسکیوال کار می کنم و مطمئنم جایی منو لنگ نمیذاره.
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
نقل قول:
نوشته شده توسط
HAMRAHSOFT.IR
سلام
برای linq چه روشی پیشنهاد مکنید
این مسئله ای که دوستمون مطرح کردن به نحوه ذخیره داده توی بانک ربط داره (یعنی به اسکیوال مربوطه)
فکر نمیکنم در متدولوژی استفاده ازش تاثیری بذاره
یعنی با لینک هم میتونید از این روش استفاده کنید اگر واقعا این روش درست باشه و کارایی داشته باشه.
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
نقل قول:
نوشته شده توسط
roolinjax
خوب عزیزم منم حرفم همینه
فرقی نداره میلادی و شمسی بودن مطرح نیست، منظورم اینه که اگر داره درست جواب میده پس برای میلادی هم درست جواب میده پس نوع داده ی datetime واقعا یه نوع داده ی اضافی به شمار میاد "البته به گفته ی شما"
من یه کلاس کامل از توابع مورد نیاز برای محاسبات شمسی ساختم که توی همه ی پروژه هام ازش استفاده می کنم و زندگی راحتی دارم
هیچوقت هم کدنویسی جدیدی برای این قضیه نکردم
توی این کلاس همه چی پیدا میشه و از طرفی خیالم راحته که دارم با نوع داده ی استاندارد خود اسکیوال کار می کنم و مطمئنم جایی منو لنگ نمیذاره.
حوب این کلاستو با آموزش بزار بقیه هم استفاده کنن
-
1 ضمیمه
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
ضمیمه 108044
آموزش لازم نداره
یه خط توضیح اول هز بلاک کافیه :
البته من توی این کلاس قطعه کدهای مفید دیگه ای هم که ممکنه به دردتون بخوره رو میذارم
لیست متدهای موجود در این کلاس به شرح زیر است :
1- تبدیل تاریخ میلادی به شمسی
2- تبدیل تاریخ شمسی به میلادی
3- بررسی صحت تاریخ وارد شده
4- محاسبه ی اختلاف دو تاریخ به دقیقه
5- محاسبه ی اختلاف دو تاریخ به روز
و موارد دیگر (گفتم شاید کاربردی باشه براتون) :
6- بررسی صحت و اعتبار کد ملی
7- بررسی اتچ بودن دیتابیس مورد نظر به اسکیوال
8- حذف پوشه ای با فایل های داخل آن
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
نقل قول:
نوشته شده توسط
roolinjax
ضمیمه 108044
آموزش لازم نداره
یه خط توضیح اول هز بلاک کافیه :
البته من توی این کلاس قطعه کدهای مفید دیگه ای هم که ممکنه به دردتون بخوره رو میذارم
لیست متدهای موجود در این کلاس به شرح زیر است :
1- تبدیل تاریخ میلادی به شمسی
2- تبدیل تاریخ شمسی به میلادی
3- بررسی صحت تاریخ وارد شده
4- محاسبه ی اختلاف دو تاریخ به دقیقه
5- محاسبه ی اختلاف دو تاریخ به روز
و موارد دیگر (گفتم شاید کاربردی باشه براتون) :
6- بررسی صحت و اعتبار کد ملی
7- بررسی اتچ بودن دیتابیس مورد نظر به اسکیوال
8- حذف پوشه ای با فایل های داخل آن
این کلاس چطوری تعداد رکوردهای بین دوتا تاریخو بیرون میکشه؟
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
شما میلادی بزن تو بانک
ولی اسکریپت اسکیوال رو قبل ارسال با متد مورد نظر به میلادی تبدیل کن وبعد ارسال کن
خیلی ساده
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
نقل قول:
نوشته شده توسط
roolinjax
شما میلادی بزن تو بانک
ولی اسکریپت اسکیوال رو قبل ارسال با متد مورد نظر به میلادی تبدیل کن وبعد ارسال کن
خیلی ساده
ولی اینجوری به نظر من باز هم مشکلاتی هست. مثل کم و زیاد بودن تعداد روزها در ماه های میلادی و شمسی. بعد هرجا بخوای تاریخو نشون کاربر بدی باید تبدیل کنی این زمانی که بخوای لیست انبوهی رو تو دیتاگرید نشون بدی به چشم میاد که چقدر سرعت رو میاره پایین. تو کریستال ریپورت هم مشکل بوجود میاد و ....
من که خودم روش خودمو بیشتر ترجیح میدم چون هم سرعتش بالاتره هم یسری مشکلاتو نداره. البته بدون اشکال هم نیست ولی خوب تا حالا من به مشکلی برنخوردم
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
نقل قول:
نوشته شده توسط
amir200h
ولی اینجوری به نظر من باز هم مشکلاتی هست. مثل کم و زیاد بودن تعداد روزها در ماه های میلادی و شمسی. بعد هرجا بخوای تاریخو نشون کاربر بدی باید تبدیل کنی این زمانی که بخوای لیست انبوهی رو تو دیتاگرید نشون بدی به چشم میاد که چقدر سرعت رو میاره پایین. تو کریستال ریپورت هم مشکل بوجود میاد و ....
من که خودم روش خودمو بیشتر ترجیح میدم چون هم سرعتش بالاتره هم یسری مشکلاتو نداره. البته بدون اشکال هم نیست ولی خوب تا حالا من به مشکلی برنخوردم
اگر محاسبات تاریخی نداشته باشید روش شما میتونه راه گشا باشه اما برای مثلا بدست آوردن تعداد روز بین دو تاریخ شما با تاریخ شمسی اصلا جواب درستی نمیگیری به همون دلیلی که خودت گفتی (اختلاف روزها در شمسی و میلادی)
مسئله ی بعدی ریختن مقدار فیلد شما درون یه متغیر تاریخ در سی شارپه که بازهم اگر میلادی نباشه صددرصد ارور میده (چون ویژوال استودیو که دیگه کلا میلادیه. بگذریم از اون کامپوننت PersianCalender که خوب توی سیستم کنونی راه گشا نیست)
ضمنا کریستال ریپورت یکی دو ثانیه تاخیر رو داره (چه محاسبات کنه چه نکنه) نکته ی بعدی اینه که ما محاسبات کریستال رو درون خود کریستال با Formula Field انجام میدیم که سرعت مناسبی داره
دیتاگرید هم زیاد کند نبوده تا الان با مثلا حدود 5000 رکورد-
در هر صورت نظر شما محترم...
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
سلام اینم یه نمونه پروژه ی کوچک که از متدهای کلاس شمسی توش استفاده شده
امیدوارم به دردتون بخوره
دانلود نمونه پروژه
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
نقل قول:
نوشته شده توسط
misagh1370
سلام من این کد رو به وی بی دات نت نوشتم اما درست کار نمیکنه.تو این کد متغیر dateرو که مقدار سال وماه وروز رو توش ریختین از چه نوعی تعریف کردین؟
این کدمه دوستان خواهش میکنم کمک کنن تا مشکلم رفع بشه و اشکال کد رو بگن.ممنون میشم
Imports System.Globalization
Dim percal As PersianCalendar = New PersianCalendar()
Dim year, month, day As string
year = percal.GetYear(DateTime.Now).ToString()
month = percal.GetMonth(DateTime.Now).ToString("d2")
day = percal.GetDayOfMonth(DateTime.Now).ToString("d2")
Dim tarikh As Date = year + "/" + month + "/" + day
MaskedTextBox1.Text = tarikh
SqlDataAdapter1.InsertCommand.Parameters.Item(0).V alue = MaskedTextBox1.Text.ToString()
If SqlConnection1.State = ConnectionState.Closed Then
SqlConnection1.Open()
End If
SqlDataAdapter1.InsertCommand.ExecuteNonQuery()
DataSet21.tbl_date.Clear()
SqlDataAdapter1.Fill(DataSet21.tbl_date)
SqlConnection1.Close()
MaskedTextBox1.Clear()
از نوع رشته باید باشه. شما به رشته تبدیل کن بعد بریز تو بانکت
Dim tarikh As string = year + "/" + month + "/" + day
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
از نوع رشته هم تبدیل کردم درج میشه اما نه صفر میذاره قبل از ماه وروز .و نه اگر ماهم بیشتر از دوازده بود ایرادی میگیره واسه روز هم همینطور.
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
نقل قول:
نوشته شده توسط
misagh1370
از نوع رشته هم تبدیل کردم درج میشه اما نه صفر میذاره قبل از ماه وروز .و نه اگر ماهم بیشتر از دوازده بود ایرادی میگیره واسه روز هم همینطور.
بفرما. ببین کار میکنه یا نه.
Dim pc As New System.Globalization.PersianCalendar
Dim sb As New System.Text.StringBuilder
sb.Append(pc.GetYear(Now).ToString() & "/")
sb.Append(Format(pc.GetMonth(Now), "0#") & "/")
sb.Append(pc.GetDayOfMonth(Now).ToString())
Label1.Text = sb.ToString()
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
فکر میکنم مشکلم این سه خط باشه اما نمیدونم چطور رفعش کنم.نمیدونم چطور مقداری که از مسک باکسم میگیرم نسبت بدم با کدی که واسه تاریخ نوشتم.
دوستان لطف کنید راهنماییم کنید وقت چندانی ندارم. ممنون
Dim tarikh As Date = year + "/" + month + "/" + day MaskedTextBox1.Text = tarikh
SqlDataAdapter1.InsertCommand.Parameters.Item(0).V alue = MaskedTextBox1.Text.ToString()
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
خیلییی ممنونم این تاریخ جاری سیستم رو نشون میده. خب اگه من بخوام تاریخم رو از یه مسک باکس از طریق این کد بریزم توی بانک نمیدونم چه کنم. شرمنده زیاد سوال میپرسم
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
اقا توی Linq اینو به من میدید؟
SELECT * FROM TBL_Name Where FildeDateName < 'date'
این ارور میده
var query = from qry in db.Mazad_tbls
where qry.Tahvil_Date.ToString() < DateTime.Now.ToShortDateString()
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
نقل قول:
نوشته شده توسط
hamid_0341
اقا توی Linq اینو به من میدید؟
SELECT * FROM TBL_Name Where FildeDateName < 'date'
این ارور میده
var query = from qry in db.Mazad_tbls
where qry.Tahvil_Date.ToString() < DateTime.Now.ToShortDateString()
کسی نظری نداره؟
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
دو طرف عملگر < ررا تاریخ در نظر بگیر نه رشته
یک مثال : date1 یک رشته معادل تاریخ امروزه
var test = from d in dates
where d < DateTime.Parse( date1)
select d;
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
من این هم گزاشتم ولی هیچ رکوردی نیاورد
Linq.DataClasses1DataContext db = new Linq.DataClasses1DataContext();
var query = from qry in db.Mazad_tbls
where DateTime.Parse(qry.Tahvil_Date) < Convert.ToDateTime(DateTime.Now.ToShortDateString( ))
select qry;
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
با سلام
چرا روی این تاریخ خطای زیر را میده .
String was not recognized as a valid DateTime.
من از کد زیر استفاده کردم
DateTime datesearch = Convert.ToDateTime(date);//date="1392/06/31"
آیا مشکل از اینه که 31/6 وجود نداره؟
آخه با بقیه ی تاریخ ها مشکل نداره.
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
نقل قول:
نوشته شده توسط
roolinjax
سلام اینم یه نمونه پروژه ی کوچک که از متدهای کلاس شمسی توش استفاده شده
امیدوارم به دردتون بخوره
دانلود نمونه پروژه
سلام
لطفا لینک رو بررسی کنید ایراد داره
ممنون
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
نقل قول:
نوشته شده توسط
HAMRAHSOFT.IR
سلام
برای linq چه روشی پیشنهاد مکنید
برای linq ان روش کار نمی کنه یعنی توی سی شارپ نمیتونی دوتا رشته را با علامت > یا < بسنجی
باید از متد string.compare استفاده کنی
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
نقل قول:
نوشته شده توسط
reza.atashafroz
امیر جان حالا اگه بخوای تاریخ رو از یه maskedbox بگیری باید چه کار کنیم ؟ یعنی کاربر خودش تاریخ رو وارد کنه مثلا به این صورت 1390/12/01 یا 01/12/1390 ؟
خب خودت داری میگی جوابتو از خاصیت ماکس همین شی ای که داری استفاده میکنی استفاده کن
-
نقل قول: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه
نقل قول:
نوشته شده توسط
amir200h
سلام به همه ی دوستان.
خیلی ها با مشکل جستجو از طریق تاریخ مشکل دارن و هر روز هم پست هایی با همین عناوین تو انجمن میبینیم.
من خودم از روش زیر استفاده میکنم. امیدوارم دیگه کسی درباره این مشکل پستی نزنه.
ابتدا using زیر رو در بالای پروژه اضافه میکنیم
using System.Globalization;
سپس تاریخ رو بصورت شمسی با کد زیر بدست میاریم. تا فرمت yyyy/mm/dd حفظ بشه
PersianCalendar PerCal = new PersianCalendar();
string Year, Day, Month;
Year = PerCal.GetYear(DateTime.Now).ToString();
Month = PerCal.GetMonth(DateTime.Now).ToString("D2");
Day = PerCal.GetDayOfMonth(DateTime.Now).ToString("D2");
date = Year + "/" + Month + "/" + Day;
خوب حالا مقدار متغیر date رو در فیلد جدولمون میریزیم
تذکر: نوع فیلدی که میخوایم تاریخ رو توش ذخیره کنیم رو nvarchar تعریف کنید
حالا واسه جستجو بین دو تاریخ از کوئری زیر استفاده میکنیم
SELECT * FROM TBL_Name Where FildeDateName Between 'date1' and 'date2'
واسه جستجو تاریخ های بعد از تاریخی که میخوایم
SELECT * FROM TBL_Name Where FildeDateName > 'date'
واسه جستجو تاریخ های قبل از تاریخی که میخوایم
SELECT * FROM TBL_Name Where FildeDateName < 'date'
برای جستجو در یک تاریخ خاص
SELECT * FROM TBL_Name Where FildeDateName = 'date'
تذکر: مقدار تاریخ ارسال شده باید با فرمت yyyy/mm/dd ارسال شود
سوال دیگه ای بود در خدمیتم
این کد ایراد داره
من تکه کد زیر رو نوشتم
strSql = "Select * From hazineha WHERE tarikh Between" + "'" + "1392" + "/" + "12" + "/" + "1" + "'" + " and tarikh=" + "'" + "1392" + "/" + "12" + "/" + "31" + "'" + "order by tarikh";
دیتای برج 11 رو هم میاره !!!!!
و مشکل اصلی اینجاس که به دید رشته نمیبینه دیتا رو !