簡體   English   中英

從字符串轉換日期和/或時間時,如何轉換失敗

[英]How to Conversion failed when converting date and/or time from character string

我的代碼如下:

我在用:

date=datatype=date;
time=datatype=time;

private void button8_Click(object sender, EventArgs e)
{

    //cmd = new SqlCommand("select * from Client_Attendence where date='" +dateTimePicker1.Value + "'", con);
    DateTime dt1= Convert.ToDateTime((dateTimePicker1.Value));
    DateTime dt2 = Convert.ToDateTime((dateTimePicker3.Value));

    SqlDataAdapter sdf = new SqlDataAdapter("select * from Client_Attendence where date between '" + dt1+ "'and '"+dt2+"'", con);

    DataTable sd = new DataTable();
    sdf.Fill(sd);
    dataGridView1.DataSource = sd;
    //dataGridView1.Columns["balance"].DefaultCellStyle.BackColor = Color.Yellow;
    //dataGridView1.Columns["enddate"].DefaultCellStyle.BackColor = Color.Red;

}

首先將日期時間轉換為字符串可能會有所幫助

dt1.ToShortDateString()
dt2.ToShortDateString()

您需要將DateTime值轉換為String

DateTime dt1= Convert.ToDateTime(dateTimePicker1.Value.ToString());
DateTime dt2 = Convert.ToDateTime(dateTimePicker3.Value.ToString());

考慮到您的以下查詢,我在這里必須建議的幾件事:

SqlDataAdapter sdf = new SqlDataAdapter("select * from Client_Attendence where date between '" + dt1+ "'and '"+dt2+"'", con);

上述查詢中需要修復的問題:

  1. 使用[date]代替date
  2. and之前需要一個空格。

意見建議

  1. 使用SqlParameters代替sql中日期的字符串縮寫。
  2. 將參數添加到SqlCommand並將其傳遞給SqlDataAdapter

建議1將避免Sql Injection攻擊。

如何實現2? 使用MSDN中的此鏈接

如果您發布的代碼是復制/粘貼,則dt1和單詞“ AND”之間沒有空格。

"select * from Client_Attendence where date between '" + dt1+ "'and '"+dt2+"'"

需要是

"select * from Client_Attendence where date between '" + dt1+ "' and '"+dt2+"'"

還要仔細檢查日期時間對象的格式。 根據它們在字符串中的表示方式,您可能需要如下定義您的Convert函數:

DateTime myDate = DateTime.ParseExact("2009-05-08 14:40:52,531", "yyyy-MM-dd HH:mm:ss,fff", System.Globalization.CultureInfo.InvariantCulture)

用您的變量替換實際的日期和時間,並更改yyy-MM-dd格式以匹配您輸入的格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM