PDA

View Full Version : شی داده ای DateTime در SQL



A.S.Roma
سه شنبه 22 بهمن 1387, 15:14 عصر
با سلام

می خواهم یک شی ء از جنس DateTime را در محیط دات نت با یک شی ء از همان جنس در SQL با استفاده از دستورات SQL مقایسه کنم. ( فقط از نظر ماه و سال )
متاسفانه Property های این شی ء را در SQL نمی شناسم.
می خواهم Property ماه ( Month ) و همچینین سال ( Year ) از شی داده ای DateTime در دات نت را با Property های مشابه در SQL مقایسه کنم . دستور زیر چگونه تغییر می کند !؟



DateTime date = newDateTime(comboBoxMonth.SelectedItem,comboBoxYea r.SelectedItem,1);
CmdLoad.CommandText = "SELECT * FROM Table WHERE Tarikh = @val";
CmdLoad.Parameters.AddWithValue("@val", date);

jafarnia
سه شنبه 22 بهمن 1387, 18:50 عصر
سلام.
با دستور Select زير مي تونيد به مقصودتون برسيد.


select convert (varchar, Tarihk, 112) from Table

يك مقدار رشته اي از سال و ماه و روز بر مي گردونه كه مي تونيد از 4 كاراكتر اول براي مقايسه سال و دو كاراكتر بعدي براي ماه استفاده كنيد. با عوض كردن 112 مي تونيد فرمت تاريخ رو عوض كنيد.

A.S.Roma
سه شنبه 22 بهمن 1387, 22:20 عصر
سلام.
با دستور Select زير مي تونيد به مقصودتون برسيد.


selectconvert (varchar, Tarihk, 112)from Table

يك مقدار رشته اي از سال و ماه و روز بر مي گردونه كه مي تونيد از 4 كاراكتر اول براي مقايسه سال و دو كاراكتر بعدي براي ماه استفاده كنيد. با عوض كردن 112 مي تونيد فرمت تاريخ رو عوض كنيد.
ممنون !
اما SQL ظاهرا" چیزی به نام convert را نمی شناسد .

jafarnia
چهارشنبه 23 بهمن 1387, 05:40 صبح
ممنون !
اما SQL ظاهرا" چیزی به نام convert را نمی شناسد .

توي دستوري كه من براتون گذاشتم اشتباها SELECT به CONVERT چسبيده شايد مشكل اين باشه.
اين دستور رو توي SQL Managment Studio به صورت يك Query اجرا كنيد بعد از جواب گرفتن توي كد برنامه ببريد.

A.S.Roma
چهارشنبه 23 بهمن 1387, 11:33 صبح
با سلام

من از بانک اطلاعاتی Access استفاده می کنم .
آنجا هم Query گرفتم همین ایراد را گرفت که :
Undefined Function Convert in Expression

jafarnia
چهارشنبه 23 بهمن 1387, 18:46 عصر
با سلام

می خواهم یک شی ء از جنس DateTime را در محیط دات نت با یک شی ء از همان جنس در SQL با استفاده از دستورات SQL مقایسه کنم. ( فقط از نظر ماه و سال )
متاسفانه Property های این شی ء را در SQL نمی شناسم.
می خواهم Property ماه ( Month ) و همچینین سال ( Year ) از شی داده ای DateTime در دات نت را با Property های مشابه در SQL مقایسه کنم . دستور زیر چگونه تغییر می کند !؟



DateTime date = newDateTime(comboBoxMonth.SelectedItem,comboBoxYea r.SelectedItem,1);
CmdLoad.CommandText = "SELECT * FROM Table WHERE Tarikh = @val";
CmdLoad.Parameters.AddWithValue("@val", date);




دوست عزيز مي خواستي شوخي كني يا اشتباه تايپي بوده. سوال در مورد SQL پرسيدي جوابشو تو Access تست مي كني !!؟:متفکر:

A.S.Roma
چهارشنبه 23 بهمن 1387, 23:13 عصر
ببخشید راستش من خیلی تو این زمینه ها اطلاعات ندارم .
فقط فکر می کردم دستورات SQL بستگی به پلت فرم اجرا ندارد . چون چه با شی OleDbConnection و چه با شی ء SqlConndction دستورات یکسانی از Sql را اجرا کردم و خروجی گرفتم.

به هر حال باید چه کار کنم .

jafarnia
پنج شنبه 24 بهمن 1387, 07:18 صبح
يك راه قابل انعطاف كه به ذهنم ميرسه اينه:


System.Data.OleDb.OleDbConnection con = new System.Data.OleDb.OleDbConnection("");
System.Data.OleDb.OleDbCommand cmdLoad = new System.Data.OleDb.OleDbCommand("SELECT field1, field2, field3, Tarikh FROM Table", con);
DataTable tblFinal = new DataTable();
con.Open();
System.Data.OleDb.OleDbDataReader dr = cmdLoad.ExecuteReader();
DateTime date;
if (dr.HasRows)
while (dr.Read())
{
date = (DateTime)dr["Tarikh"];
if (date.Year.ToString == comboBoxYear.SelectedItem && date.Month.ToString == comboBoxMonth.SelectedItem)
tblFinal.Rows.Add(dr["field1"], dr["field2"], dr["field3"], dr["Tarikh"]);
}
con.Close();

در نهايت همهي مقادير كورد نظر در يك Table ذخيره ميشه.