Проблемы с получением поля Oracle TimeStamp в .Net - PullRequest
3 голосов
/ 28 мая 2009

Мне нужно начать работу с миллисекундами в .Net 3.0. Данные будут возвращены из базы данных Oracle, и, если я правильно понимаю, Oracle может хранить только даты, которые используют миллисекунды в качестве метки времени. Похоже, что тип Date в .Net может обрабатывать миллисекунды, но когда я пытался извлечь метки времени из хранимых процедур Oracle в прошлом, я столкнулся с неприятной ошибкой. Может ли .Net обрабатывать тип данных отметки времени Oracle или мне нужно вернуть его как VarChar и привести к типу даты?

Спасибо

Dave

Ответы [ 2 ]

3 голосов
/ 29 мая 2009

Если вы используете 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
0 голосов
/ 29 мая 2009

Было бы полезно узнать, в чем ошибка ..

У меня была похожая проблема со связыванием таблиц Oracle в Access. Он использует метку времени, которая составляет дни (с дробными днями) с полуночи 1 января 1970 года. Я просто привожу поля как десятичные и конвертирую их:

поле / 86400 + 25569

Затем вы можете использовать format () или любую другую функцию для преобразования ее в строку даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...