【问题标题】:Equivalent of time(7) SQL Server 2008 datatype in .NET.NET 中的时间等效 (7) SQL Server 2008 数据类型
【发布时间】:2011-09-28 05:51:41
【问题描述】:

.NET 中的 SQL Server 2008 的 time(7) 数据类型等效于什么?我想在该列中单独存储小时和分钟,为此我应该在 SQL Server 中使用哪种数据类型!

【问题讨论】:

  • 我可以在 dot net 中使用 timespan 数据类型作为 SQL server 中 time(7) 数据类型的等效值吗?

标签: .net sql-server sql-server-2008


【解决方案1】:

MSDN 给出了 SQL 数据类型和 CLR 数据类型之间的映射 - 它也建议使用 TimeSpanNullable<TimeSpan>(对于可空列)。请注意,您访问数据的方式将决定您实际获取价值的方式。例如,DbDataReader 没有 GetTimeSpan 方法 - 但 SqlDataReader 确实such a method。我希望 LINQ to SQL 或实体框架能够自动执行映射。

【讨论】:

    【解决方案2】:

    this 链接获得了一篇不错的文章。

    我将使用 dot net 中的时间跨度数据类型作为 SQL Server 中 time(7) 数据类型的等效数据类型来存储小时和分钟。

    【讨论】:

      【解决方案3】:

      正如 Jon Skeet 所说,Class SqlDataReader 确实有一个 GetTimeSpan Method

      conn = new SqlConnection(blablabla);
      conn.Open();
      
      string sql = "SELECT * FROM MyTable";
      SqlCommand sqlCommand = new SqlCommand(sql, conn);
      
      reader = sqlCommand.ExecuteReader();
      
      while (reader.Read())
          {
          MyVeryOwnModel mvom = new MyVeryOwnModel();
          mvom.timeStart = reader.GetTimeSpan(reader.GetOrdinal("column_time_start"));
          mvom.timeEnd = reader.GetTimeSpan(reader.GetOrdinal("column_time_end"));
          }
      
      reader.Close();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-01
        • 1970-01-01
        • 2010-12-04
        • 1970-01-01
        • 1970-01-01
        • 2010-09-30
        • 1970-01-01
        相关资源
        最近更新 更多