在我的数据库中,我有一个如下所示的smalldate数据类型:“2014-09-01 19:00:00”。
我正在尝试将此字符串转换为日期:
DateTime data2 = DateTime.ParseExact(obiekt.PelnaData, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
我试过这个:
string query = "Select *, Convert(nvarchar, DataMeczu, 104) as formatData, Convert(nvarchar, DataMeczu, 114) as formatData2, Convert(nvarchar, DataMeczu, 120) as formatData3 From MyTable Where MyVar = @MyVar";
SqlDataReader rdr = com.ExecuteReader();
while(rdr.Read())
{
TerminarzeLigaModel terminarz = new TerminarzeLigaModel();
terminarz.PelnaData = rdr["formatData3"].ToString();
or this version:
string dataA = rdr["formatData"].ToString();
string dataB = rdr["formatData2"].ToString();
terminarz.PelnaData = dataA + " " + dataB;
}
但每次收到此错误时:“字符串未被识别为有效的DateTime”。我不知道我做错了什么。如果我将数据库中的日期粘贴到变量中:
string dataExample = "2014-09-01 19:00:00";
DateTime data2 = DateTime.ParseExact(dataExample, "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
比它工作正常。你能说出什么问题吗?
答案 0 :(得分:0)
好像你正试图在DateTime字段上设置一个字符串:
terminarz.PelnaData = rdr["formatData3"].ToString();
显示转化的代码行不在while
循环内,而it works就好了。
尝试用以下代码替换上面的行:
terminarz.PelnaData = DateTime.ParseExact(rdr["formatData3"].ToString(), "yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
如果仍然失败,请调试并检查rdr["formatData3"]
的实际值。
答案 1 :(得分:0)
这看起来像是一个国际问题。你可以调试看看" formatData3"正在回归,是yyyy-MM-dd HH:mm:ss或任何其他格式还是有效月份回来?
这可能是你的问题。