執行讀取器從表中檢索某些DateTime時出現問題。執行SqlDataReader時發生DateTime轉換錯誤
首先,我一個頁面傳遞了一些變量到另外一個頁面:
//calStart.SelectedDate is a DateTime value
Response.Redirect("SpecialReports_Results.aspx?userListValues=" + userListValues + "&groupListValues=" + groupListValues + "&calSelected=" + calStart.SelectedDate);
然後,在新頁面上:
//To retrieve the values that were sent over
string userListValues = Request.QueryString["userListValues"];
string groupListValues = Request.QueryString["groupListValues"];
string dateSelected = Request.QueryString["calSelected"];
// SQL Server connection stuff + string argument
SqlCommand command2 = new SqlCommand();
command2.Connection = gconn;
String sql2 = "SELECT MAX([Day]) as TheDay FROM Days WHERE User_ID = @User_ID AND [Day] < '@dateSelected' AND NOT EXISTS (SELECT 1 FROM Days WHERE User_ID = @User_ID AND [DAY] >= '@dateSelected')";
command2.CommandText = sql2;
command2.Parameters.Add(new SqlParameter("@User_ID", ""));
command2.Parameters.Add(new SqlParameter("@dateSelected", dateSelected));
List<string> dates = new List<string>();
//userID is a List<string>
foreach (string str in userID)
{
command2.Parameters["@User_ID"].Value = str;
using (SqlDataReader reader = command2.ExecuteReader())
{
while (reader.Read()) //Getting error here: Conversion failed when converting datetime from character string.
{
if (reader.HasRows)
{
dates.Add(reader["Day"].ToString());
}
}
}
}
表Days
設置像這樣:
User_ID | Day
----------------------------------
10 | 2010-11-09 00:00:00.000
20 | 2015-12-06 00:00:00.000
30 | 2012-01-12 00:00:00.000
40 | 2013-07-23 00:00:00.000
Day
列的類型爲DateTime
。
我試圖做轉換字符串dateSelected
和List<string>
日期DateTime
:
DateTime confirmedDate = DateTime.Parse(dateSelected);
List<DateTime> dates = new List<DateTime>()
,但我得到了同樣的錯誤。
注意:SQL語句在Microsoft的SQL Server Management Studio中執行時可以工作。
您是否在'DateTime.Parse'之前檢查'dateSelected'的值?那是什麼?和什麼是數據類型?串? – Ian
是的,它是一樣的價值,但只是一個字符串。例如: '「2015年12月1日12:00:00 AM」'是一個字符串,解析後它變成了 '{2015年12月1日12:00:00 AM}'那是System.DateTime – pfinferno
什麼完全是錯誤嗎?在哪一行? –