如何在.net应用程序中使用sql server时间数据类型?

时间:2011-03-14 16:44:16

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

有谁知道如何在c#.net应用程序中使用sql server 2008中引入的时间数据类型?我一直试图让它发挥作用,但没有成功。

6 个答案:

答案 0 :(得分:47)

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

答案 1 :(得分:7)

我认为您可以将TimeSpan数据类型用于您的目的。 这是一个article,解释了在ado.net中使用Time数据类型

答案 2 :(得分:5)

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

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

在System.TimeSpan范围内是10675199.02:48:05.4775808 - 10675199.02:48:05.4775807

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

答案 3 :(得分:1)

您是如何访问数据的?使用实体框架,StoredProcedures等 如果您必须传递日期的字符串表示,请确保以“yyyy-mm-dd hh:mm:ss”格式执行此操作,否则您将面临dd / mm / yyyy与mm / dd /的风险yyyy混乱。 如果您正在使用Entity Framework或DataSet,那么您应该只传递一个DataTime实例参数,例如DateTime.Now

答案 4 :(得分:0)

您可以使用datareader使用类似于以下语句的内容来阅读它。

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

答案 5 :(得分:0)

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

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