2012-06-09 24 views
0

我有2個datetimepickers。在我選擇的查詢中,我想在這些日期之間獲取記錄。數據庫中date的數據類型在varchar(MAX)中。對於datetimepicker我已經設置自定義格式爲dd-MM-yyyy。這裏是我的sql查詢如何比較select date中從datetimepicker中獲取的兩個日期?

SqlDataAdapter da = new SqlDataAdapter("Select custname From tb_customer WHERE date >= '"+dtp_fromdate.Text+"' AND date <= '"+dtp_todate.Text+"'", con); 

對於例如:如果我的開始日期是2012年9月6日和日期是11-06-2012。通過上面的查詢,它顯示我的記錄爲10-06-2012和11-06-2012

如果我的開始日期是10-06-2012並且迄今爲11-06-2012,則爲Incase。有了上面的查詢它顯示我2012年10月6日和記錄不11-06-2012

請幫

回答

1

使用ConvertCast T-SQL來VARCHAR值轉換爲DateDateTime和也學/使用參數代替硬編碼的SQL字符串。

0

問題在於缺少參數的使用。使用參數將避免您和yuor數據庫後端之間的任何誤解

DataSet ds = new DataSet(); 
using (SqlConnection con = new SqlConnection(connectionString)) 
{ 
    SqlDataAdapter da = new SqlDataAdapter(); 
    string query = "Select custname From tb_customer WHERE date >= @from AND date <= @to" 
    da.SelectCommand = new SqlCommand(queryString, con); 
    da.SelectCommand.AddWithValue("@from" , dtp_fromdate.Value); 
    da.SelectCommand.AddWithValue("@to" , dtp_to.Value); 
    da.Fill(ds); 
    return ds; 
}