PDA

View Full Version : آموزش: رفع مشکل جستجو از طریق تاریخ شمسی برای همیشه



amir200h
دوشنبه 10 تیر 1392, 14:16 عصر
سلام به همه ی دوستان.
خیلی ها با مشکل جستجو از طریق تاریخ مشکل دارن و هر روز هم پست هایی با همین عناوین تو انجمن میبینیم.
من خودم از روش زیر استفاده میکنم. امیدوارم دیگه کسی درباره این مشکل پستی نزنه.

ابتدا 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 ارسال شود

سوال دیگه ای بود در خدمیتم

koohyarah
دوشنبه 10 تیر 1392, 16:12 عصر
سلام خیلی ممنون
من توی اس کیو ال از فرمتdatetime برای ذخیره انتخاب کردم اما نمی دونم از توی c# چطور میشه با تکس باکس تاریخی که توسط کاربر وارد میشه رو ذخیره کنم.لطفا کمک کنید؟

amir200h
دوشنبه 10 تیر 1392, 16:43 عصر
datetime برای ذخیره تاریخ میلادی خوبی و راحت میشه باهاش کار کرد ولی برای شمسی بهتره از nvarchar استفاده کنی

reza.atashafroz
یک شنبه 30 تیر 1392, 00:45 صبح
امیر جان حالا اگه بخوای تاریخ رو از یه maskedbox بگیری باید چه کار کنیم ؟ یعنی کاربر خودش تاریخ رو وارد کنه مثلا به این صورت 1390/12/01 یا 01/12/1390 ؟

amir200h
یک شنبه 30 تیر 1392, 12:29 عصر
امیر جان حالا اگه بخوای تاریخ رو از یه maskedbox بگیری باید چه کار کنیم ؟ یعنی کاربر خودش تاریخ رو وارد کنه مثلا به این صورت 1390/12/01 یا 01/12/1390 ؟

هیچ فرقی نمیکنه. من خودمم از maskedbox استفاده میکنم

npscash
دوشنبه 31 تیر 1392, 23:29 عصر
البته بهتره از char(10) برای ذخیره سازی استفاده کنید یا varchar(10) و نیازی به nvarchar نیست.

amir200h
دوشنبه 31 تیر 1392, 23:56 عصر
البته بهتره از char(10) برای ذخیره سازی استفاده کنید یا varchar(10) و نیازی به nvarchar نیست.
حتما ی دلیل داره که گفتم nvarchar برو یخورده مطالعه کن تا تفاوت رو ببینی بعد خودت به جواب میرسی که بهتره از کدوم استفاده کنیم :لبخندساده:

misagh1370
جمعه 04 مرداد 1392, 15:48 عصر
خیلی ممنون .خیلی وقت بود که دنبال همچین کدی بودم.فقط یه سوال d2چیه و چرا توی yearنذاشتینش؟اگه بخوام تاریخ رو از یه مسک تکست باکس درج کنم تو فیلدم باید چکار کنم ممنون میشم راهنمایی کنید

roolinjax
جمعه 04 مرداد 1392, 18:47 عصر
سلام خوشگلم این کوئری هایی که نوشتی به فیلدمون به چشم رشته نگاه نمیکنه ؟
و به صورت رشته بزرگتر و کوچکتر بودن رو درنظر نمیگیره ؟
اگه قرار بود به همین راحتی باشه دیگه چرا نوع داده ی datetime رو میذاشتن ؟
حتما این روش شما یه باگی داره

misagh1370
جمعه 04 مرداد 1392, 19:00 عصر
خیلی ممنون .خیلی وقت بود که دنبال همچین کدی بودم.فقط یه سوال d2چیه و چرا توی yearنذاشتینش؟اگه بخوام تاریخ رو از یه مسک تکست باکس درج کنم تو فیلدم باید چکار کنم ممنون میشم راهنمایی کنید

roolinjax
جمعه 04 مرداد 1392, 19:15 عصر
d2 یعنی اینکه فیلد ماه و روز رو دو رقمی نشون بده اگر تک رقمی باشه به صورت 05 نشون میده (یعنی این تاریخ 1390/2/5 به صورت 1390/02/05 نوشته بشه)
در مورد سال چون مطمئنا چهار رقم تکمیله پس نیازی نیست

misagh1370
جمعه 04 مرداد 1392, 22:24 عصر
ممنون.اگه درجش رو تو یه فیلد جدول بلدین یادم بدین لطفا.

amir200h
جمعه 04 مرداد 1392, 22:49 عصر
خیلی ممنون .خیلی وقت بود که دنبال همچین کدی بودم.فقط یه سوال d2چیه و چرا توی yearنذاشتینش؟اگه بخوام تاریخ رو از یه مسک تکست باکس درج کنم تو فیلدم باید چکار کنم ممنون میشم راهنمایی کنید
D2 رو میزاریم که طول اون رشته برابر با 2 حرف بشه و اگه کمتر بود مثلا 2 بود یه صفر به اولش اضافه میکنه و میشه 02
هیچ فرقی نمیکنه من خودمم از مسک میگیرم. تنظیماتشو به صورت 0000/00/00 قرار بده و مقدارشو بریز تو جدول



سلام خوشگلم این کوئری هایی که نوشتی به فیلدمون به چشم رشته نگاه نمیکنه ؟
و به صورت رشته بزرگتر و کوچکتر بودن رو درنظر نمیگیره ؟
اگه قرار بود به همین راحتی باشه دیگه چرا نوع داده ی datetime رو میذاشتن ؟
حتما این روش شما یه باگی داره

بله دوست من. دقیقا همین کارو میکنه. داده datetime مختض تاریخ میلادیه و تاریخ 1300 رو قبول نمیکنه. برای رفع این مشکل اگه اشتباه نکنم از sql 2005 به بعد داده datetime2 اومد که این مشکل رو حل کرد. البته من خودم ازش استفاده نمیکنم و به همین صورتی که آموزش دادم استفاده میکنم و تا حالا هیچ مشکلی نداشته.



ممنون.اگه درجش رو تو یه فیلد جدول بلدین یادم بدین لطفا.

بفرما

//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_connecti on=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();

misagh1370
شنبه 05 مرداد 1392, 01:31 صبح
عالی بود ممنون.فقط منظور از @DateShamsi چیه و ما از کجا به برنامه میگیم که مقدار مسک باکس رو توی فیلد بریزه.ببخشید زیاد سوال میپرسم چون میخوام برنامه رو به وبی دات نت بنویسم

esafb52
شنبه 05 مرداد 1392, 01:38 صبح
دوست عزیز این یه پارامتر هست و باید یه چیزی رو که میخوای بجای این تو دستور درجت قرار بدی بنویسی یعنی بجای date مسک تکس باکست رو بنویس البته تکسشو با ویژوال استدیو ننوشتم خودت منظورمو بگیر
com.Parameters.AddWithValue("@DateShamsi", masktexbox.text.tostring());

roolinjax
یک شنبه 06 مرداد 1392, 17:57 عصر
بله دوست من. دقیقا همین کارو میکنه. داده datetime مختض تاریخ میلادیه و تاریخ 1300 رو قبول نمیکنه. برای رفع این مشکل اگه اشتباه نکنم از sql 2005 به بعد داده datetime2 اومد که این مشکل رو حل کرد. البته من خودم ازش استفاده نمیکنم و به همین صورتی که آموزش دادم استفاده میکنم و تا حالا هیچ مشکلی نداشته.

خوب عزیزم منم حرفم همینه
فرقی نداره میلادی و شمسی بودن مطرح نیست، منظورم اینه که اگر داره درست جواب میده پس برای میلادی هم درست جواب میده پس نوع داده ی datetime واقعا یه نوع داده ی اضافی به شمار میاد "البته به گفته ی شما"
من یه کلاس کامل از توابع مورد نیاز برای محاسبات شمسی ساختم که توی همه ی پروژه هام ازش استفاده می کنم و زندگی راحتی دارم
هیچوقت هم کدنویسی جدیدی برای این قضیه نکردم
توی این کلاس همه چی پیدا میشه و از طرفی خیالم راحته که دارم با نوع داده ی استاندارد خود اسکیوال کار می کنم و مطمئنم جایی منو لنگ نمیذاره.

roolinjax
یک شنبه 06 مرداد 1392, 18:00 عصر
سلام
برای linq چه روشی پیشنهاد مکنید

این مسئله ای که دوستمون مطرح کردن به نحوه ذخیره داده توی بانک ربط داره (یعنی به اسکیوال مربوطه)
فکر نمیکنم در متدولوژی استفاده ازش تاثیری بذاره
یعنی با لینک هم میتونید از این روش استفاده کنید اگر واقعا این روش درست باشه و کارایی داشته باشه.

amir200h
یک شنبه 06 مرداد 1392, 18:12 عصر
خوب عزیزم منم حرفم همینه
فرقی نداره میلادی و شمسی بودن مطرح نیست، منظورم اینه که اگر داره درست جواب میده پس برای میلادی هم درست جواب میده پس نوع داده ی datetime واقعا یه نوع داده ی اضافی به شمار میاد "البته به گفته ی شما"
من یه کلاس کامل از توابع مورد نیاز برای محاسبات شمسی ساختم که توی همه ی پروژه هام ازش استفاده می کنم و زندگی راحتی دارم
هیچوقت هم کدنویسی جدیدی برای این قضیه نکردم
توی این کلاس همه چی پیدا میشه و از طرفی خیالم راحته که دارم با نوع داده ی استاندارد خود اسکیوال کار می کنم و مطمئنم جایی منو لنگ نمیذاره.

حوب این کلاستو با آموزش بزار بقیه هم استفاده کنن

roolinjax
یک شنبه 06 مرداد 1392, 18:39 عصر
108044

آموزش لازم نداره
یه خط توضیح اول هز بلاک کافیه :
البته من توی این کلاس قطعه کدهای مفید دیگه ای هم که ممکنه به دردتون بخوره رو میذارم
لیست متدهای موجود در این کلاس به شرح زیر است :
1- تبدیل تاریخ میلادی به شمسی
2- تبدیل تاریخ شمسی به میلادی
3- بررسی صحت تاریخ وارد شده
4- محاسبه ی اختلاف دو تاریخ به دقیقه
5- محاسبه ی اختلاف دو تاریخ به روز
و موارد دیگر (گفتم شاید کاربردی باشه براتون) :
6- بررسی صحت و اعتبار کد ملی
7- بررسی اتچ بودن دیتابیس مورد نظر به اسکیوال
8- حذف پوشه ای با فایل های داخل آن

amir200h
یک شنبه 06 مرداد 1392, 19:27 عصر
108044

آموزش لازم نداره
یه خط توضیح اول هز بلاک کافیه :
البته من توی این کلاس قطعه کدهای مفید دیگه ای هم که ممکنه به دردتون بخوره رو میذارم
لیست متدهای موجود در این کلاس به شرح زیر است :
1- تبدیل تاریخ میلادی به شمسی
2- تبدیل تاریخ شمسی به میلادی
3- بررسی صحت تاریخ وارد شده
4- محاسبه ی اختلاف دو تاریخ به دقیقه
5- محاسبه ی اختلاف دو تاریخ به روز
و موارد دیگر (گفتم شاید کاربردی باشه براتون) :
6- بررسی صحت و اعتبار کد ملی
7- بررسی اتچ بودن دیتابیس مورد نظر به اسکیوال
8- حذف پوشه ای با فایل های داخل آن

این کلاس چطوری تعداد رکوردهای بین دوتا تاریخو بیرون میکشه؟

roolinjax
یک شنبه 06 مرداد 1392, 19:53 عصر
شما میلادی بزن تو بانک
ولی اسکریپت اسکیوال رو قبل ارسال با متد مورد نظر به میلادی تبدیل کن وبعد ارسال کن
خیلی ساده

amir200h
یک شنبه 06 مرداد 1392, 20:53 عصر
شما میلادی بزن تو بانک
ولی اسکریپت اسکیوال رو قبل ارسال با متد مورد نظر به میلادی تبدیل کن وبعد ارسال کن
خیلی ساده

ولی اینجوری به نظر من باز هم مشکلاتی هست. مثل کم و زیاد بودن تعداد روزها در ماه های میلادی و شمسی. بعد هرجا بخوای تاریخو نشون کاربر بدی باید تبدیل کنی این زمانی که بخوای لیست انبوهی رو تو دیتاگرید نشون بدی به چشم میاد که چقدر سرعت رو میاره پایین. تو کریستال ریپورت هم مشکل بوجود میاد و ....
من که خودم روش خودمو بیشتر ترجیح میدم چون هم سرعتش بالاتره هم یسری مشکلاتو نداره. البته بدون اشکال هم نیست ولی خوب تا حالا من به مشکلی برنخوردم

roolinjax
دوشنبه 07 مرداد 1392, 18:09 عصر
ولی اینجوری به نظر من باز هم مشکلاتی هست. مثل کم و زیاد بودن تعداد روزها در ماه های میلادی و شمسی. بعد هرجا بخوای تاریخو نشون کاربر بدی باید تبدیل کنی این زمانی که بخوای لیست انبوهی رو تو دیتاگرید نشون بدی به چشم میاد که چقدر سرعت رو میاره پایین. تو کریستال ریپورت هم مشکل بوجود میاد و ....
من که خودم روش خودمو بیشتر ترجیح میدم چون هم سرعتش بالاتره هم یسری مشکلاتو نداره. البته بدون اشکال هم نیست ولی خوب تا حالا من به مشکلی برنخوردم

اگر محاسبات تاریخی نداشته باشید روش شما میتونه راه گشا باشه اما برای مثلا بدست آوردن تعداد روز بین دو تاریخ شما با تاریخ شمسی اصلا جواب درستی نمیگیری به همون دلیلی که خودت گفتی (اختلاف روزها در شمسی و میلادی)
مسئله ی بعدی ریختن مقدار فیلد شما درون یه متغیر تاریخ در سی شارپه که بازهم اگر میلادی نباشه صددرصد ارور میده (چون ویژوال استودیو که دیگه کلا میلادیه. بگذریم از اون کامپوننت PersianCalender که خوب توی سیستم کنونی راه گشا نیست)
ضمنا کریستال ریپورت یکی دو ثانیه تاخیر رو داره (چه محاسبات کنه چه نکنه) نکته ی بعدی اینه که ما محاسبات کریستال رو درون خود کریستال با Formula Field انجام میدیم که سرعت مناسبی داره
دیتاگرید هم زیاد کند نبوده تا الان با مثلا حدود 5000 رکورد-
در هر صورت نظر شما محترم...

roolinjax
سه شنبه 08 مرداد 1392, 17:25 عصر
سلام اینم یه نمونه پروژه ی کوچک که از متدهای کلاس شمسی توش استفاده شده
امیدوارم به دردتون بخوره
دانلود نمونه پروژه (http://uppit.com/qcz9z7cnaurx/ShamsiSample.rar)

amir200h
دوشنبه 14 مرداد 1392, 13:44 عصر
سلام من این کد رو به وی بی دات نت نوشتم اما درست کار نمیکنه.تو این کد متغیر 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
دوشنبه 14 مرداد 1392, 13:55 عصر
از نوع رشته هم تبدیل کردم درج میشه اما نه صفر میذاره قبل از ماه وروز .و نه اگر ماهم بیشتر از دوازده بود ایرادی میگیره واسه روز هم همینطور.

amir200h
دوشنبه 14 مرداد 1392, 14:10 عصر
از نوع رشته هم تبدیل کردم درج میشه اما نه صفر میذاره قبل از ماه وروز .و نه اگر ماهم بیشتر از دوازده بود ایرادی میگیره واسه روز هم همینطور.

بفرما. ببین کار میکنه یا نه.
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()

misagh1370
دوشنبه 14 مرداد 1392, 14:17 عصر
فکر میکنم مشکلم این سه خط باشه اما نمیدونم چطور رفعش کنم.نمیدونم چطور مقداری که از مسک باکسم میگیرم نسبت بدم با کدی که واسه تاریخ نوشتم.
دوستان لطف کنید راهنماییم کنید وقت چندانی ندارم. ممنون

Dim tarikh As Date = year + "/" + month + "/" + day MaskedTextBox1.Text = tarikh

SqlDataAdapter1.InsertCommand.Parameters.Item(0).V alue = MaskedTextBox1.Text.ToString()

misagh1370
دوشنبه 14 مرداد 1392, 14:27 عصر
خیلییی ممنونم این تاریخ جاری سیستم رو نشون میده. خب اگه من بخوام تاریخم رو از یه مسک باکس از طریق این کد بریزم توی بانک نمیدونم چه کنم. شرمنده زیاد سوال میپرسم

hamid_0341
یک شنبه 03 شهریور 1392, 11:04 صبح
اقا توی 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
یک شنبه 03 شهریور 1392, 13:50 عصر
اقا توی Linq اینو به من میدید؟
SELECT * FROM TBL_Name Where FildeDateName < 'date'
این ارور میده
var query = from qry in db.Mazad_tbls
where qry.Tahvil_Date.ToString() < DateTime.Now.ToShortDateString()

کسی نظری نداره؟

wolf_majid
دوشنبه 04 شهریور 1392, 09:20 صبح
دو طرف عملگر < ررا تاریخ در نظر بگیر نه رشته
یک مثال : date1 یک رشته معادل تاریخ امروزه
var test = from d in dates
where d < DateTime.Parse( date1)
select d;

hamid_0341
دوشنبه 04 شهریور 1392, 09:40 صبح
من این هم گزاشتم ولی هیچ رکوردی نیاورد
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;

amir3321
دوشنبه 04 شهریور 1392, 11:33 صبح
به این پست (http://barnamenevis.org/showthread.php?412341-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88-%D8%A8%D8%B1-%D8%A7%D8%B3%D8%A7%D8%B3-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE%28%D8%B1%D8%B4%D8%A A%D9%87%29)یک سری بزن

helpsos
یک شنبه 31 شهریور 1392, 16:37 عصر
با سلام
چرا روی این تاریخ خطای زیر را میده .
String was not recognized as a valid DateTime.
من از کد زیر استفاده کردم
DateTime datesearch = Convert.ToDateTime(date);//date="1392/06/31"
آیا مشکل از اینه که 31/6 وجود نداره؟
آخه با بقیه ی تاریخ ها مشکل نداره.

momimomi
شنبه 21 دی 1392, 18:06 عصر
سلام اینم یه نمونه پروژه ی کوچک که از متدهای کلاس شمسی توش استفاده شده
امیدوارم به دردتون بخوره
دانلود نمونه پروژه (http://uppit.com/qcz9z7cnaurx/ShamsiSample.rar)

سلام
لطفا لینک رو بررسی کنید ایراد داره
ممنون

goldoon
شنبه 21 دی 1392, 18:42 عصر
سلام
برای linq چه روشی پیشنهاد مکنید
برای linq ان روش کار نمی کنه یعنی توی سی شارپ نمیتونی دوتا رشته را با علامت > یا < بسنجی
باید از متد string.compare استفاده کنی

امیر مهرشاد
شنبه 21 دی 1392, 19:21 عصر
امیر جان حالا اگه بخوای تاریخ رو از یه maskedbox بگیری باید چه کار کنیم ؟ یعنی کاربر خودش تاریخ رو وارد کنه مثلا به این صورت 1390/12/01 یا 01/12/1390 ؟

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

MehdiElexal
پنج شنبه 08 اسفند 1392, 16:59 عصر
سلام به همه ی دوستان.
خیلی ها با مشکل جستجو از طریق تاریخ مشکل دارن و هر روز هم پست هایی با همین عناوین تو انجمن میبینیم.
من خودم از روش زیر استفاده میکنم. امیدوارم دیگه کسی درباره این مشکل پستی نزنه.

ابتدا 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 رو هم میاره !!!!!
و مشکل اصلی اینجاس که به دید رشته نمیبینه دیتا رو !