2011-01-06 177 views
1

我有数据存储在一个SQL数据库,我试图读入ASP.NET MVC应用程序。我可以很好地获取数据 - 但日期时间并没有转化为任何有用的东西。如何正确地将SQL datetime转换为C#datetime?

这里是我到目前为止(一些数据删节为 “...”):

public JsonResult GetXYZByStatusJson() 
    { 
     var sqlConn = new SqlConnection(...); 
     var command = new SqlCommand("...", sqlConn); 

     command.CommandType = CommandType.StoredProcedure; 
     command.Parameters.AddWithValue("@status", 0); 

     sqlConn.Open(); 
     var sqlResult = command.ExecuteReader(); 

     var collection = new Collection<Object>(); 
     while (sqlResult.Read()) 
     { 
      collection.Add(new XYZ(
       ... 
       Convert.ToDateTime(sqlResult["DateSent"]), 
       Convert.ToDateTime(sqlResult["DateDue"]), 
       ... 
       )); 
     } 

     sqlResult.Close(); 
     sqlConn.Close(); 

     return Json(collection); 
    } 

产生的JSON格式化罚款,但日期看起来像“\ /日期(1294120800000)\/“

如何正确地将SQL日期时间转换为C#DateTime?使用.ToString()没有任何影响。

+1

通过SQL你的意思SQL服务器?如果没有使用哪个数据库服务器? – 2011-01-06 19:42:03

+3

你如何保持你的日期时间值在数据库中?你使用哪种类型? – HABJAN 2011-01-06 19:43:29

+1

@Jim - 因为他使用`SqlCommand`,所以可以安全地假设SQL Server – 2011-01-06 19:44:47

回答

2

Sql Server和C#之间的转换没有任何问题。

问题是JsonResult如何格式化字符串。

下SO问题说明了如何在客户端对其进行处理:How do I format a Microsoft JSON date?

另一种方法是创建自己的替代JsonResult

0

如果是SQL Server,sqlResult [“DateSent”] .ToString()会给你这样的东西: “6/9/1999 12:00:00 AM,8/15/1999 12:00: 00 AM“

使用内置的字符串方法(.IndexOf(),.Remove()等)或创建自己的方法来解析您需要的字符串。