我将以下值存储在Oracle TIMESTAMP
列05-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
的更好方法?
答案 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))