在 C#.NET 应用程序中使用 SQL Server 时间数据类型?

Posted

技术标签:

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

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

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

【问题讨论】:

哪个答案解决了您的问题? LHS 上有一个接受复选标记。 【参考方案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"];
            
        

【讨论】:

以上是关于在 C#.NET 应用程序中使用 SQL Server 时间数据类型?的主要内容,如果未能解决你的问题,请参考以下文章

在 C#/.NET3.5 中构造动态 sql 查询的最佳方式?

ExtJS 使用 C#.net 与 SQL Server 连接

SQL语句报错:You have an error in your SQL syntax; check the manual that corresponds to your MariaDB serv

在 SQL SERVER 中使用交叉应用进行更新

在 C#.NET 中对 SQL Server 的 MS 访问

vc中如何修改TXT文件的指定行的内容?