我可以使用什么格式字符串来解析Oracle TIMESTAMP?

时间:2014-08-07 14:52:53

标签: c# sql-server oracle datetime datetime-format

我将以下值存储在Oracle TIMESTAMP05-JAN-18 12.00.00.000000000 AM中。我试图解析值并将它们转换为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的更好方法?

2 个答案:

答案 0 :(得分: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);

有关详情,请参阅:Custom Date and Time Format Strings

答案 1 :(得分: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))