PDA

View Full Version : سوال: خواندن کوچکترین تاریخ از جدول sql از نوع varchar



دلتنگ اسمان
دوشنبه 30 تیر 1393, 12:01 عصر
سلام.
بنده تاریخ ها رو بصورت varchar در دیتابیس ذخیره میکنم. حالا میخوام کوچکترین تاریخ رو بخونم.مثلا اگه از تاریخ 1390/02/02 تا الان اطلاعات ذخیره شده تاریخ 1390/02/02 رو برام برگردونه.
ممنون

shahryari
دوشنبه 30 تیر 1393, 12:14 عصر
برای اینکار فیلدتون رو از نوع int بگیرید و تاریخ مثلا 1393/04/30 را بصورت 13930430 ذخیره کنید
با این طریق میتونید از فانکشنهای min و max و sum و ...... در سیکول استفاده کنید
برای نمایش در دیتا گرید تاریخ فوق کافیه فرمت اون ستون را برابر "0000/00/00" قرار بدید در این صورت مقدار 13930430 را بصورت 1393/04/30 نمایش میده
این کار رو بنده در اکثر پروژه ها انجام میدم

Davidd
دوشنبه 30 تیر 1393, 12:28 عصر
از تابع MIN استفاده كنيد. به همين راحتي!
SELECT MIN(date) FROM tbl

دلتنگ اسمان
دوشنبه 30 تیر 1393, 13:19 عصر
از تابع MIN استفاده كنيد. به همين راحتي!
SELECT MIN(date) FROM tbl

این خطا رو میده :Specified cast is not valid.
این هم کد:

SqlConnection con = new SqlConnection();
SqlCommand com = new SqlCommand();
con.ConnectionString = "server=localhost;Integrated security=true;database=matab";
com.Connection = con;
con.Open();
com.CommandText = "SELECT min(datedarman) FROM (SELECT * from darman) as darman";

string mindate = (((int)com.ExecuteScalar()).ToString());
con.Close();
con.Dispose();

return Convert.ToInt32(mindate);

دلتنگ اسمان
دوشنبه 30 تیر 1393, 13:21 عصر
برای اینکار فیلدتون رو از نوع int بگیرید و تاریخ مثلا 1393/04/30 را بصورت 13930430 ذخیره کنید
با این طریق میتونید از فانکشنهای min و max و sum و ...... در سیکول استفاده کنید
برای نمایش در دیتا گرید تاریخ فوق کافیه فرمت اون ستون را برابر "0000/00/00" قرار بدید در این صورت مقدار 13930430 را بصورت 1393/04/30 نمایش میده
این کار رو بنده در اکثر پروژه ها انجام میدم

تو جدول به شکل 13920202 ذخیره میشه اما از نوع varchar کلی هم اطلاعات دارم. الان ،تغییر نوع مشکلات خودشو داره.

Davidd
دوشنبه 30 تیر 1393, 13:31 عصر
این خطا رو میده :Specified cast is not valid.


اول اينكه چرا كوئري اينجوري نوشتين؟ ‌چه نيازي به SELECT داخل SELECT هست؟ ميشه اينجوري نوشت SELECT min(datedarman) FROM darman

دوم چرا خروجي com.ExecuteScalar() ميخاي به int تبديل كني و بعد از int به string تبديل كني؟ اينجوري بنويسش : com.ExecuteScalar().ToString()