Как прочитать TIMESTAMP (6) с типом данных часового пояса на oracle, используя powershell? - PullRequest
0 голосов
/ 06 марта 2020

Мне нужно прочитать столбец таблицы Oracle (который имеет тип данных TIMESTAMP (6) с часовым поясом) с помощью Powershell или преобразовать тип данных отметки времени в строку с помощью Powershell.

Таблица:

select * from job;

enter image description here |

Тип данных таблицы:

JOB_id   : Number
DATE     : TIMESTAMP(6) WITH TIME ZONE
  $query = "SELECT * FROM JOB WHERE JOB_ID=12345"
  $command=$connection.CreateCommand()
  $command.CommandText=$query
  $reader=$command.ExecuteReader()

  while ($reader.Read()) {
      $date=$reader.getInt32(0).ToString() 
      Write-Output $date
  }

Сообщение об ошибке:

 Exception calling "GetString" with "1" argument(s): "Specified cast is
 not valid." At D:\SelfAnalysisKit\job.ps1:765 char:15
 +               $date=$reader.Getstring(2)
 +               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
     + FullyQualifiedErrorId : InvalidCastException

1 Ответ

0 голосов
/ 06 марта 2020

Какое значение хранится в $ reader? У меня нет доступа к Oracle, чтобы проверить это. Вы можете передать свою переменную в командлет Get-Member, чтобы узнать, какой у вас тип объекта.

$reader | Get-Member

Значение свойств вашего объекта можно просмотреть, используя

$reader | Select *

Если вы публикуете вывод этих двух команд, и я могу вам помочь.

Если вы посмотрите на методы для SQLDataReader, вы увидите GetDateTime(Int32) Это может приблизить вас к желаемому результату.

https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqldatareader?view=netframework-4.8

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