PDA

View Full Version : سوال: کوئری برای نمایش رکوردهایی که امروز ثبت شده اند؟



پیام حیاتی
شنبه 12 دی 1394, 11:34 صبح
می خوام یه کوئری بزنم به جدول تیکت ها که تیکت هایی که امروز ثبت شده اند رو نمایش بده.
در جدول تاریخ فارسی و انگلیسی رو زمان ثبت تیکت ها ذخیره کردم .
برای جستجو تاریخ فارسی و انگلیسی امروز رو در متغیر ذخیره می کنم بعد در کوئری مقایسه انجام دادم با هر دو تاریخ اما چیزی برگشت داده نمیشه :




string TodayDate = "تاریخ : " + p.GetYear(DateTime.Now) + "/" + p.GetMonth(DateTime.Now) + "/" + p.GetDayOfMonth(DateTime.Now);
/////////////////////////////////////
string TodayDate = DateTime.Now.ToString("yyyy-MM-dd");



برای جستجو :




SqlDataAdapter da = new SqlDataAdapter("SELECT r_id as 'شماره' , r_cate_name as 'مجموعه' , r_username as 'نام کاربر' , r_subject as 'موضوع' , r_priority as 'اهمیت' , r_state as 'وضعیت' , r_descrip as 'توضیحات' , r_submitted as 'تاریخ درخواست' , r_time as 'زمان درخواست' FROM Request WHERE r_depart_d_id= '" + Session["DropDataCompany"].ToString() + "' and r_submitted= '" + TodayDate + "' ", con);

پیام حیاتی
یک شنبه 13 دی 1394, 08:39 صبح
بروزرسانی.......

malloc
یک شنبه 13 دی 1394, 10:14 صبح
داداش تو وقتی میخوای بگی برو واسه امروز رو بیار باید روی شرط تاریخت دقت کنی .... مثلا الان ده صبح هست و تو میخوای از 00:00 بامداد تا الان همه تیکتها رو بیاره خوب باید بگی اون تیکتهایی که تاریخشون از 00:00 امروز بزرگتره رو بیار

با دستور زیر تو اسکیوال میتونی تاریخ اول صبح و بدست بیاری

select dateadd(DAY, datediff(day, 0, getdate()),0)


اینو بریز توی یه متغیر بعد بگو اون تاریخ هایی رو بیار که از این تاریخ بزرگتر باشن

پیام حیاتی
یک شنبه 13 دی 1394, 12:00 عصر
بدین شکل تاریخ روز رو در متغیر ذخیره کردم :


string query = "select dateadd(DAY, datediff(day, 0, getdate()),0)";
SqlCommand result = new SqlCommand(query, con);
con.Open();
string timesql = result.ExecuteScalar().ToString();
con.Close();

شرط در کوئری :


SqlDataAdapter da = new SqlDataAdapter("SELECT r_id as 'شماره' , r_cate_name as 'مجموعه' , r_username as 'نام کاربر' , r_subject as 'موضوع' , r_priority as 'اهمیت' , r_state as 'وضعیت' , r_descrip as 'توضیحات' , r_submitted as 'تاریخ درخواست' , r_time as 'زمان درخواست' FROM Request WHERE r_depart_d_id= '" + Session["DropDataCompany"].ToString() + "' and r_date_en<= '" + timesql + "' ", con);


خطا :


Server Error in '/' Application.


Conversion failed when converting date and/or time from character string.


Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.


Exception Details: System.Data.SqlClient.SqlException: Conversion failed when converting date and/or time from character string.


Source Error:




Line 112: SqlDataAdapter da = new SqlDataAdapter("SELECT r_id as 'شماره' , r_cate_name as 'مجموعه' , r_username as 'نام کاربر' , r_subject as 'موضوع' , r_priority as 'اهمیت' , r_state as 'وضعیت' , r_descrip as 'توضیحات' , r_submitted as 'تاریخ درخواست' , r_time as 'زمان درخواست' FROM Request WHERE r_depart_d_id= '" + Session["DropDataCompany"].ToString() + "' and r_date_en>= '" + timesql + "' ", con);
Line 113: DataSet ds = new DataSet();
Line 114: da.Fill(ds, "Temp");
Line 115: gridViewReqPnlViewAnswer.DataSource = ds;
Line 116: gridViewReqPnlViewAnswer.DataMember = "Temp";

نوع فیلد بانک datetime می باشد.

malloc
یک شنبه 13 دی 1394, 12:29 عصر
اول از همه اگه میخوای پارامتر رو از سی شارپ بفرستی که خوب نیازی نیست کد "select dateadd(DAY, datediff(day, 0, getdate()),0)"; رو بزنی ....
بهتره که پارامتر بدید تا مقدار مستقیم توی خط سلکت بدید ....

توی سی شارپ هم تاریخ اول صبح رو با دستور زیر بدست میارن نیازی نیست بخاطر تاریخ صبح بری دیتابیس و برگردی .....
DateTime.Now.Date

ضمنا فکر کنم خطایی که ب شما میده بخاطر نوع گذاشتن علامت (') توی خط سلکت هست ..... بهتره پارامتری کار کنید و پارامتر پاس بدید بهش و کلا سلکت رو بصورت استورپروسیجر استفاده کنید نه این شکلی توی دستورات سی شارپ

پیام حیاتی
یک شنبه 13 دی 1394, 14:42 عصر
تفاوتی نکرد ، خطا پا برجاست.

پیام حیاتی
دوشنبه 14 دی 1394, 16:15 عصر
بروزرسانی....

sg.programmer
دوشنبه 14 دی 1394, 18:20 عصر
در تاریخی که میخوای ارسال کنی زمان را برابر صفر کن بعد تاریخ را به اون اضافه کن و از این کویری اسفاده کن

DateTime="1394/10/14 00:00"



lastQuery = "SELECT [Sefaresh], [NameFamili], [Tel], [FeeTotal], [DateTime] FROM [tblHuman] Where [DateTime] >= N'" + _DateTime + "' order by Sefaresh desc";

یا از این طریق

lastQuery = "SELECT [Sefaresh], [NameFamili], [Tel], [FeeTotal], [DateTime] FROM [tblHuman] Where [DateTime] Like N'%" + _DateTime + "%' order by Sefaresh desc";