在 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