datatable datetime列没有毫秒

本文关键字:datetime datatable | 更新日期: 2023-09-27 18:17:03

我的数据库列中有一个日期-时间值为yyyy-MM-dd HH:MM:ss.fff。

但是当我把它放到.net数据表中,并把它作为DateTime。。。我没有得到毫秒部分。

我缺了什么类型的铸件吗?

Convert.ToDateTime(dtRow[colIndex])

这是我的代码,其中dtRow是我的数据表中的一个特定列。

编辑:

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"。

谢谢!

datatable datetime列没有毫秒

我遇到了这个问题,正是这个问题把我带到了这里。默认的"ToString"使用CurrentCulture,CurrentCulture(很可能(使用省略毫秒的Format。因此,解析etc不起作用,因为这会将其转换为字符串(这就是问题所在!(并再次返回,从而丢弃ms。

但是,"对象"是DateTime。这意味着你可以简单地将项强制转换为DateTime变量并使用它。在我的例子中,我有一个来自SQL语句的DateTime,我需要将其存储为String,并注意到它们在解析时都有.000毫秒。

我的特殊要求是我不知道列的类型,因此在末尾有默认的ToString。

private static string ConvertFieldToString(DataRow row, string fieldName)
{
  if (row.IsNull(fieldName))
     return null;
  if (row[fieldName].GetType() == typeof(DateTime))
  {
     DateTime dt = (DateTime)row[fieldName];
     return dt.ToString("yyyy-MM-dd hh:mm:ss.fff tt");
  }
  return row.ToString();
}

输出将看起来像:2018-04-18 03:30:43.233 PM

在MSDN上阅读更多信息:https://msdn.microsoft.com/en-us/library/k494fzbf(v=vs.110(.aspx

这将为您的带来好处

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

试试这个:

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));
    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];