Какую строку формата я могу использовать для анализа Oracle TIMESTAMP?

1

У меня есть следующее значение, хранящееся в столбце Oracle TIMESTAMP 05-JAN-18 12.00.00.000000000 AM. Я пытаюсь проанализировать значения и преобразовать их в нечто, DATETIME SQL Server DATETIME. Это то, что я пытаюсь сделать:

DateTime result;
DateTime.TryParseExact(
    "05-JAN-18 12.00.00.000000000 AM",
    "dd-MMM-yy hh.mm.ss.fffffff tt", 
    new CultureInfo("en-US"), DateTimeStyles.None,
    out result))

за исключением того, что это не работает, потому что в строке формата отсутствует точность для анализа всех миллисекунд. Как я могу обойти это? Есть ли другая строка формата, которую я могу использовать, или лучший способ конвертировать Oracle TIMESTAMP в DateTime?

  • 0
    Я вообще не знаю синтаксис оракула, но если вы используете ANSI-совместимый формат, он будет работать во всех СУБД.
Теги:
sql-server
datetime
datetime-format

2 ответа

1
Лучший ответ

Для вашего измененного вопроса и данных вам нужно fffffff00 для миллисекундной части.

   DateTime result;
   DateTime.TryParseExact(
       "10-JAN-12 03.51.35.028000000 PM",
       "dd-MMM-yy hh.mm.ss.fffffff00 tt",
       new CultureInfo("en-US"), DateTimeStyles.None,
       out result);

Дополнительные сведения см. В разделе " Пользовательские строки даты и времени"

  • 0
    Я сделал правку - в марке есть AM / PM. Вот другой пример: 10-JAN-12 03.51.35.028000000 PM
  • 1
    @ IanO'Brien, для этого вы должны указать fffffff00 поскольку максимальное значение для анализируемой миллисекунды составляет до 7 цифр.
1

В.NET максимальное число значащих цифр секунд равно семи, которое представлено как fffffff.

Поэтому, если вы хотите успешно выполнить синтаксический анализ, вам нужно удалить часть 00 в исходной части строки.

DateTime result;
DateTime.TryParseExact(
    "05-JAN-18 12.00.00.0000000 AM",
    "dd-MMM-yy hh.mm.ss.fffffff tt", 
    new CultureInfo("en-US"), DateTimeStyles.None,
    out result))

Или вы можете использовать разделитель строк (если эти две цифры всегда равны 00);

DateTime result;
DateTime.TryParseExact(
    "05-JAN-18 12.00.00.000000000 AM",
    "dd-MMM-yy hh.mm.ss.fffffff'00' tt", 
    new CultureInfo("en-US"), DateTimeStyles.None,
    out result))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню