PDA

View Full Version : روش درست جستجوی بازه تاریخی چیه؟



hamzehshabani
جمعه 23 دی 1390, 21:40 عصر
سلام من یه مشکلی دارم، چطوری میتونم اطلاعات بین 2 تا تاریخ رو بدست بیارم؟

من توی جدولم اطلاعات تاریخ رو بصورت "1390/10/23" در یک فیلد nvarchar ذخیره میکنم، خواستم از کد زیر استفاده کنم اما جواب نگرفتم.


SELECT * From AllList WHERE Tarikh BETWEEN '1390/3/22' AND '1390/10/24'


بعدش خواستم فیلد مربوط به تاریخ رو از نوع Date تعریف کنم اما اونطوری هم ساعت و هم تاریخ نوشته میشد که من نیازی به ساعت ندارم و توی برنامم چون تیبل برای کاربر نشون داده میشه نمیخوام ساعت نوشته باشه.

برای ثبت تاریخ هم از کمپوننت PersianDate استفاده میکنم.

لطفا کمکم کنید چون از کل برنامم فقط گرفتن گزارش از یک بازه تاریخی مونده که اگه تموم شه کارم تموم میشه...

فقط یه کدی میخوام که توی اس کیو ال بتونم بین 2 تا تاریخ هر چیزی میخوام بهم نشون بده...

crazy_1892
جمعه 23 دی 1390, 22:26 عصر
SELECT * From AllList WHERE Tarikh Date>'1390/3/22' AND Date< '1390/10/24'
دوست عزیز من از روش بالا حواب گرفتم

maktoom
جمعه 23 دی 1390, 22:45 عصر
سلام.
می تونی از % استفاده کنی.
فکر کنم جواب بگیری. جواب گرفتی خبر بده.

hamzehshabani
جمعه 23 دی 1390, 23:16 عصر
دوستان کدها رو یکبار دیگه چک کردم با همون کد BETWEEN جواب گرفتم ، در اصل یک جا توی فرمم تاریخ رو جابجا میزدم یعنی توی سرچ جای ماه و روز رو جابجا مینوشتم.
ممنون از همگی...

meysamrt
شنبه 24 دی 1390, 00:03 صبح
دوستان کدها رو یکبار دیگه چک کردم با همون کد BETWEEN جواب گرفتم ، در اصل یک جا توی فرمم تاریخ رو جابجا میزدم یعنی توی سرچ جای ماه و روز رو جابجا مینوشتم.
ممنون از همگی...

دوست عزیز متاسفانه شما موقتا جواب گرفتی و برای بعضی از بازه ها برنامه شما جواب نمیده. چون تاریخ رو بصورت varchar گرفتی باید حتما روز و ماه رو دورقمی بنویسی مثل 1390/03/22

hamzehshabani
شنبه 24 دی 1390, 13:19 عصر
خب من برای دریافت روز و ماه از comboBox استفاده میکنم و توسط ایندکسش به نتیجه میرسم میتونم برای برطرف شدن مشکلات برای برنامه تعیین کنم که اگه ایندکس کمتر از 10 بود یه 0 قبل از عدد ایندکس بذاره.

فقط اینکه فیلد هام از نوع nvarchar هستش مشکلی بوجود نمیاره؟ در آینده؟ برنامه همیشه خوب کار میکنه؟

meysamrt
شنبه 24 دی 1390, 15:30 عصر
خب من برای دریافت روز و ماه از comboBox استفاده میکنم و توسط ایندکسش به نتیجه میرسم میتونم برای برطرف شدن مشکلات برای برنامه تعیین کنم که اگه ایندکس کمتر از 10 بود یه 0 قبل از عدد ایندکس بذاره.

فقط اینکه فیلد هام از نوع nvarchar هستش مشکلی بوجود نمیاره؟ در آینده؟ برنامه همیشه خوب کار میکنه؟


مشکلی پیش نمیاد که nvarchar گرفتی ولی من همیشه ترجیح میدم از DateTime در SQL 2005 و Date در SQL 2008 استفاده کنم. چون میتونم همه نوع محاسباتی رو روی تاریخ انجام بدم و فضای کمتری هم اشغال میکنه. تازه میتونم از توابع تاریخ sql هم استفاده کنم

hamzehshabani
یک شنبه 25 دی 1390, 09:49 صبح
آره درستش اینه که برای تاریخ از Date استفاده شه اما توی این برنامه nvarchar نیاز های من رو کاملا رفع میکنه...

فقط میخواستم مطمئن شم مشکل پیش میاد یا نه که خیالم راحت شد. ممنون.

Only_god
دوشنبه 26 دی 1390, 21:48 عصر
سلام

SELECT * WHERE TBLroghan.MDate >='" + date1.ToShortDateString() + "' AND TBLroghan.MDate <='" + date2.ToShortDateString

که data1 و date2 متغیر هستند