【发布时间】:2009-05-29 04:44:03
【问题描述】:
我需要在 .Net 3.0 中开始使用毫秒。数据将从 Oracle 数据库返回,如果我理解正确,Oracle 只能存储使用毫秒作为时间戳的日期。 .Net 中的 Date 类型似乎可以处理毫秒,但是当我过去尝试从 Oracle 存储过程中检索时间戳时,我遇到了一个令人讨厌的错误。 .Net 可以处理 Oracle 时间戳数据类型,还是我需要将其作为 VarChar 带回并将其转换为日期类型?
谢谢,
戴夫
【问题讨论】:
我需要在 .Net 3.0 中开始使用毫秒。数据将从 Oracle 数据库返回,如果我理解正确,Oracle 只能存储使用毫秒作为时间戳的日期。 .Net 中的 Date 类型似乎可以处理毫秒,但是当我过去尝试从 Oracle 存储过程中检索时间戳时,我遇到了一个令人讨厌的错误。 .Net 可以处理 Oracle 时间戳数据类型,还是我需要将其作为 VarChar 带回并将其转换为日期类型?
谢谢,
戴夫
【问题讨论】:
如果您使用ODP.NET,那么您可以获得Oracle.DataAccess.Types.OracleTimeStamp 的值。然后,您可以使用Value 属性将其作为System.DateTime 对象返回。
您的代码将如下所示:
Private Function GetTimeStamp() As DateTime
Dim timeStamp As DateTime
Dim sql As String = "your timestamp query"
Using conn As OracleConnection = New OracleConnection("your connection string")
Using command As OracleCommand = New OracleCommand(sql, conn)
conn.Open()
Using dataReader As OracleDataReader = command.ExecuteReader(CommandBehavior.CloseConnection)
If dataReader.Read() Then
timeStamp = dataReader.GetOracleTimeStamp(0).Value
End If
End Using
End Using
End Using
Return timeStamp
End Function
【讨论】:
知道错误是什么会很有帮助..
我在 Access 中链接 Oracle 表时遇到了类似的问题。它使用自 1970 年 1 月 1 日午夜以来的天数(带有小数天)的时间戳。我只是将字段作为十进制输入,然后转换它们:
字段/86400+25569
然后您可以使用 format() 或任何函数将其转换为日期字符串。
【讨论】: