Функция Oracle TO_DATE () - PullRequest
       3

Функция Oracle TO_DATE ()

0 голосов
/ 07 февраля 2019

Я пытаюсь вставить дату в базу данных Oracle, которая импортируется из таблицы Excel.В некоторых строках электронной таблицы дата представлена ​​в 24-часовом формате, а в некоторых строках она представлена ​​в формате AM / PM.

Я начал преобразовывать строку даты в формат oracle, используя функцию TO_DATE как

"TO_DATE(\'" + Timestamp + "\', 'MM/DD/YYYY HH:MI:SS AM', 'nls_date_language=american')"

«Отметка времени» здесь представляет собой строковую переменную C #, которая имеет дату в строковом формате.

Я получаю исключение, когда переменная отметки времени представлена ​​в 24-часовом формате.Есть ли способ заставить мой код C # принимать оба типа форматов даты и вставлять их в таблицу оракулов?

1 Ответ

0 голосов
/ 07 февраля 2019

Вот два пути, по которым вы можете пойти:

C # (как указано выше)

DateTime.ParseExact имеет перегрузку , которая позволяет вампередать несколько строк формата.Он будет использовать первый, который работает.DateTime.TryParseExact также имеет эту перегрузку.DateTime.Parse нет.

string[] formats = {"dd/MM/yyyy HH:mm:ss", "dd/MM/yyyy hh:mm:ss tt"};
DateTime Timestamp = DateTime.ParseExact(inputDate, formats, CultureInfo.InvariantCulture, DateTimeStyles.None);

Oracle

Попросите Oracle проверить AM или PM и соответствующим образом скорректировать строку формата.Это необработанный Оракул;Я оставлю вам строение строки:

TO_DATE(val,
  CASE WHEN REGEXP_LIKE(val, '(AM|PM)')
    THEN 'MM/DD/YYYY HH:MI:SS AM'
    ELSE 'MM/DD/YYYY HH24:MI:SS'
  END)

Любые проблемы с кодом дайте мне знать.Я не на машине, где я мог бы проверить эти фрагменты.

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