2013-09-07 3 views
1

.aspx:Строки быть преобразована в формат дата

<asp:TextBox ID="txtend" runat="server"></asp:TextBox></td> 

Этот код ASPX сохранит «дата» в текстовом поле.

Я хочу получить доступ к этому текстовому полю в C#, где в коде отображается как Как преобразовать формат строки в тип даты и получить доступ ..?

SqlDataAdapter adapter = new SqlDataAdapter(
    "select * from Membership_det where updateDate is between "+txtstart.Text+" and "+txtend.Text+" ", 
    con); 
+2

Пожалуйста, обратите внимание, что ваш код подвержен [инъекции SQL] (http://en.wikipedia.org/wiki/SQL_injection). –

+0

использовать storeprocedure вместо этого запроса –

ответ

1
DateTime startDate; 
    DateTime endDate; 

    if (DateTime.TryParse(txtstart.Text, out startDate) && DateTime.TryParse(txtend.Text, out endDate)) 
    { 
     //string n1 = DropDownList2.SelectedItem.Text; 

     if (DropDownList1.SelectedItem.Text == "Membership") 
     { 
      SqlConnection con = new 
     SqlConnection(ConfigurationManager.ConnectionStrings["ProjectConnectionString"].ToString()); 
      con.Open(); 
      SqlDataAdapter adapter = new SqlDataAdapter("select p.Name,m.FID,m.MembNo,m.MembType,m.Validity,m.Remarks from Membership_det m INNER JOIN Personal_det p ON m.FID= p.FID where m.updateDate between @Start and @End ", con); 
      adapter.SelectCommand.Parameters.Add("@Start", SqlDbType.Date).Value = startDate; 
      adapter.SelectCommand.Parameters.Add("@End", SqlDbType.Date).Value = endDate; 
      DataTable dt = new DataTable(); 
      adapter.Fill(dt); 
      con.Close(); 
      GridView1.DataSource = dt; 
      GridView1.DataBind(); 
     } 
     log.Debug("Info: Admin viewed the membership details"); 
    } 
1

Вы можете использовать DateTime.ParseExact, чтобы преобразовать его. Что-то вроде этого: -

DateTime.ParseExact(txtstart.Text, "yyyyMMdd", null); 

На стороне записки: -

Как указано на Уве Кейма в комментариях код подвержен SQL injection.

Было бы хорошо, если вы используете Параметрированные SQL-запросы.

0

Используйте это:

DateTime startDate = DateTime.ParseExact(txtstart.Text, "yyyyMMdd", null); 
DateTime endDate = DateTime.ParseExact(txtend.Text, "yyyyMMdd", null); 

SqlDataAdapter adapter = new SqlDataAdapter(
    "select * from Membership_det where updateDate is between "+ startDate.ToString() + " and "+ endDate.ToString() +" ", 
    con); 
+0

@Rahul Tripathi - Извините, но я думаю, что другие также знают C#. :) – Bibhu

+0

В каком формате я должен ввести дату .. я имею в виду dd/mm/yyyy или mm/dd/yyyy –

+0

, он дает ошибку, как..String не был признан действительным DateTime ... Когда дата указана в формат мм/дд/гггг –

0

использование этого

string date = "01/08/2008"; 
    DateTime dt = Convert.ToDateTime(date); 

||

string date = "Sun, 17 Mar 2013 12:40:23 +0000"; 
var dt = DateTime.ParseExact(date, "ddd, dd MMM yyyy hh:mm:ss zzz", CultureInfo.InvariantCulture); 
0

Ваш Textbox даты и времени, как «25-09-2013» средств, вкладываемых тип формата «DD-MM-YYYY», как, что, какой тип вы получите, что формат строки.

E.g: 1.

var da="2013-09-25"; 
DateTime.ParseExact(da, "yyyy-MM-dd", 
System.Globalization.CultureInfo.CurrentCulture); 

E.g: 2.

var da="25-09-2013";  
DateTime.ParseExact(da, "dd-MM-yyyy", 
System.Globalization.CultureInfo.CurrentCulture); 
0
SqlDataAdapter adapter = new SqlDataAdapter(
    "select * from Membership_det where updateDate is between '"+ Convert.ToDateTime(txtstart.Text).ToString("dd/MMM/yyyy")+"' and '"+ Convert.ToDateTime(txtend.Text).Tostring("dd/MMM/yyyy")+"' ", 
    con); 
Смежные вопросы