[英]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);
上述查詢中需要修復的問題:
[date]
代替date
and
之前需要一個空格。 意見建議
SqlParameters
代替sql中日期的字符串縮寫。 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.