【问题标题】:Problems Retrieving the Oracle TimeStamp Field in .Net在 .Net 中检索 Oracle 时间戳字段时出现问题
【发布时间】:2009-05-29 04:44:03
【问题描述】:

我需要在 .Net 3.0 中开始使用毫秒。数据将从 Oracle 数据库返回,如果我理解正确,Oracle 只能存储使用毫秒作为时间戳的日期。 .Net 中的 Date 类型似乎可以处理毫秒,但是当我过去尝试从 Oracle 存储过程中检索时间戳时,我遇到了一个令人讨厌的错误。 .Net 可以处理 Oracle 时间戳数据类型,还是我需要将其作为 VarChar 带回并将其转换为日期类型?

谢谢,

戴夫

【问题讨论】:

    标签: .net vb.net oracle


    【解决方案1】:

    如果您使用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
    

    【讨论】:

      【解决方案2】:

      知道错误是什么会很有帮助..

      我在 Access 中链接 Oracle 表时遇到了类似的问题。它使用自 1970 年 1 月 1 日午夜以来的天数(带有小数天)的时间戳。我只是将字段作为十进制输入,然后转换它们:

      字段/86400+25569

      然后您可以使用 format() 或任何函数将其转换为日期字符串。

      【讨论】:

        猜你喜欢
        • 2017-12-27
        • 1970-01-01
        • 2017-02-12
        • 1970-01-01
        • 2022-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-14
        相关资源
        最近更新 更多