2015-10-09 3 views
0

У меня есть значение времени в виде yyyy-MM-dd HH: mm: ss.fff в моей базе данных.datetime datetime column dont have milliseconds

Но когда я получаю это в datatable .net и получаю его как DateTime ... Я не получаю часть в миллисекундах.

Есть ли какой-либо литье, которое мне не хватает?

Convert.ToDateTime(dtRow[colIndex]) 

Это мой код, где dtRow - это конкретный столбец в моей таблице данных.

Edit:

String.Format("{0:yyyy-MM-dd HH:mm:ss.fff}", Convert.ToDateTime(dtRow[colIndex])) 

"2014-07-28 15: 18: 43,000"

, где фактическое значение "2014-07-28 15: 18: 43,866".

Спасибо!

+0

это не строка - это дата тип данных даты. – Relativity

+0

Как вы получаете доступ к набору результатов? Почему вы пытаетесь разобрать его как строку? Если вы используете ADO.NET и 'SqlDataReader', просто вызовите его метод GetDateTime. Не нужно ничего конвертировать. – n0rd

+0

это таблица данных, а не считыватель данных. Я имею дело с огромным количеством данных. – Relativity

ответ

0

Это будет делать трюк для вас

DateTime dt = DateTime.Parse(dtRow[colIndex]); 
String.Format("{0:yyyy-MM-dd HH:mm:ss.fff}", dt) 
+0

Пожалуйста, см. Мое редактирование ... ur код будет печатать миллисекунды, если значение присутствует ... но сама таблица данных как-то отрезает это значение. – Relativity

+0

Вам нужно сделать 'String.Format' при извлечении данных из SQL, тогда данные также будут присутствовать в' datatable'. Пожалуйста, покажите код, в котором вы извлекаете значения из 'SQL' в' DataTable' –

+0

. Я запрашиваю, как выбрать * из таблицы1. – Relativity

0

Попробуйте это:

string dateString = dtRow[colIndex]; 
string format = "yyyy-MM-dd HH:mm:ss.fff"; 

DateTime result = DateTime.ParseExact(dateString, format, CultureInfo.InvariantCulture); 
Console.WriteLine("{0} converts to {1}.", dateString, String.Format("{0:yyyy-MM-dd HH:mm:ss.fff}", result)); 
0
static void Main(string[] args) 
    { 
     var dt = new DataTable(); 
     dt.Columns.Add("id", typeof(int)); 
     dt.Columns.Add("date", typeof(DateTime)); 

     for (int i = 0; i < 10; ++i) 
     { 
      var r = dt.NewRow(); 
      r[0] = i; 
      r[1] = DateTime.Now.AddMinutes(-i); 
      dt.Rows.Add(r); 
     } 

     foreach (var r in dt.Rows.OfType<DataRow>()) 
     { 
      Console.WriteLine("{0} - {1:yyyy-MM-dd HH:mm:ss.fff}", r[0], r[1]); 
     } 

     Console.ReadLine(); 
    } 

Если добавленная стоимость в DataTable была DateTime вам не нужно конвертировать все, это уже DateTime, функции форматирования будут все в порядке. Если вам необходимо получить доступ к отдельным свойствам программно, просто введите его:

DateTime timestamp = (DateTime)r[1];