【问题标题】:Use SQL Server time datatype in C#.NET application?在 C#.NET 应用程序中使用 SQL Server 时间数据类型?
【发布时间】:2011-07-15 04:03:24
【问题描述】:

如何在 C#.NET 中使用 SQL Server 2008 中引入的 SQL time 数据类型?

我一直在尝试让它工作,但没有成功。

【问题讨论】:

  • 哪个答案解决了您的问题? LHS 上有一个接受复选标记。

标签: c# .net sql sql-server time


【解决方案1】:

这是一个MSDN article,它回顾了 SQL Server 2008 中针对 ADO.NET 引入的所有新日期和时间数据类型。正如文档所说:对于System.Data.DbType.Time,您将使用.NET Framework 类型System.TimeSpan

【讨论】:

    【解决方案2】:

    我认为您可以使用 TimeSpan 数据类型来达到您的目的。 这是一个 article,它解释了在 ADO.NET 中使用 Time 数据类型。

    【讨论】:

      【解决方案3】:

      即使是微软的人也倾向于建议将 sql 数据类型 time 映射到 System.Timestamp 我不建议这样做,

      因为sql时间的范围是00:00:00.0000000 - 23:59:59.9999999

      而 System.TimeSpan 的范围是 10675199.02:48:05.4775808 - 10675199.02:48:05.4775807

      这只是略有不同,可能会导致严重的运行时超出范围错误。

      【讨论】:

      • 你有什么推荐的?
      • 取决于您的环境,如果需要,我通常倾向于存储秒甚至毫秒。
      【解决方案4】:

      您可以使用类似于以下语句的数据阅读器读取它。

      TimeSpan time = dr.GetTimeSpan(dr.GetOrdinal(“Time7FieldName”));
      

      【讨论】:

        【解决方案5】:

        您如何访问数据?使用实体框架、StoredProcedures 等
        如果您必须传递日期的字符串表示形式,请确保以“yyyy-mm-dd hh:mm:ss”格式进行传递,否则您将面临 dd/mm/yyyy vs mm/dd/ 的风险yyyy混乱。 如果您使用的是实体框架或数据集,那么您应该只将参数传递给 DataTime 实例,例如 DateTime.Now

        【讨论】:

        • 我正在使用城堡活动记录来访问数据
        【解决方案6】:

        如果您的字段及时,您可以简单地使用 (Timespan) 进行投射,

         while (reader.Read())
                {
                     TimeSpan DBStartTime = (TimeSpan)reader["StartTime"];
                     TimeSpan DBEndTime = (TimeSpan)reader["EndTime"];
                    
                }
        

        【讨论】:

          猜你喜欢
          • 2014-10-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多