PDA

View Full Version : مشکل در مقایسه دو تاریخ



bahar_engineer
چهارشنبه 02 دی 1388, 12:29 عصر
سلام

من دو تا تاریخ میلادی دارم که البته کامل هستن ... یعنی تایم هم داره .
sdat,edat که هر دو از نوع datetime هستن.
senddate هم فیلد تاریخ توی بانکم هست.

می خوام بین این دو تاریخ گزارش بگیرم ...دستورم اینه :



......where (senddate between '" + sdat + "' AND '" + edat + "')


اما خطای data type mismatch... می ده

مگه توی between نباید دو تا تاریخ از نوع datetime باشن؟

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

خوب چطور یه تاریخ کامل رو به datetime کوتاه (یعنی فقط تاریخ) تبدیل کنم که نوعش هم datetime باشه ؟

string می شه اما وقتی دوباره convert.todatetime کنم که تایمش هم می آد!

Soroush.Sarabi
چهارشنبه 02 دی 1388, 12:41 عصر
دوست عزیز در SQL Server 2005 غیر از اون چیزی که گفتی راهی نداری چون نوع داده ای Time یا Date

تنها نداریم اما در مورد مقایسه این چیزی که نوشتی خوب نباید هم جواب بده چون اصلا نیازی به "" و '

ندارند و در ضمن هم اون پیغام خطا مربوط به داشتن Time نمیشه مقایسه با وجود Time هم انجام میشه.

slashslash2009
چهارشنبه 02 دی 1388, 12:42 عصر
اگر میخوای فقط تاریخ نشون بده این کارو بکن :

MessageBox.Show(DateTime.Now.ToString("d"));کدتون هم درسته یک مثال دیگه :

"Select * from table1 where date BETWEEN'" + date1.Text + "'AND'" + date2.Text + "'"

البته تاریخ کوچمترو باید اول باشه بعدش تاریخ بزرگ یعنی date1 تاریخ کوچکتر مثلا 1388/01/01 و date2 تاریخ بزرگتر 1388/08/21

bahar_engineer
چهارشنبه 02 دی 1388, 13:12 عصر
دوست عزیز در SQL Server 2005 غیر از اون چیزی که گفتی راهی نداری چون نوع داده ای Time یا Date

تنها نداریم اما در مورد مقایسه این چیزی که نوشتی خوب نباید هم جواب بده چون اصلا نیازی به "" و '

ندارند و در ضمن هم اون پیغام خطا مربوط به داشتن Time نمیشه مقایسه با وجود Time هم انجام میشه.



--------------------------------------------------
فیلم های رایگان آموزش عملی C#‎‎ به همراه نمونه کدهای انجام شده

وب سایت رسمی سروش سارابی مدرس،مشاور و تحلیلگر سیستم

www.soroush-sarabi.com (http://www.soroush-sarabi.com)



اگه این کوتیشن ها رو بردارم که دیگه هیچی کاملا خراب می شه

دقت کنید که sdat و edat متغیر هستند از نوع Datetime



string sdate, edate , tempsdate,tempedate;
DateTime sdat, edat;
sdate = TextBox3.Text + "/" + TextBox2.Text + "/" + TextBox1.Text;
edate = TextBox6.Text + "/" + TextBox5.Text + "/" + TextBox4.Text;
sdat = Shamsi2Miladi(sdate);
edat = Shamsi2Miladi(edate);

و در مورد جناب slashslash هم باید بگم اگه کد من درسته پس چرا خطا می ده ؟

در ضمن مثال شما data1.text هست یعنی یه لیبلی چیزیه ... از نوع string دارین با هم مقایسه می کنین ... در این صورت فیلد بانک باید نوعش چی باشه ؟

مال من همش از نوع datetime هست. هم فیلد توی بانکم هم متغیرهام که با between مقایسه می کنم