У меня есть следующее значение, хранящееся в столбце 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
?
Для вашего измененного вопроса и данных вам нужно 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);
Дополнительные сведения см. В разделе " Пользовательские строки даты и времени"
10-JAN-12 03.51.35.028000000 PM
fffffff00
поскольку максимальное значение для анализируемой миллисекунды составляет до 7 цифр.
В.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))