确定DataColumn是否仅为日期

问题描述 投票:2回答:2

我有一个DataTable对象,可以访问其Columns集合。对于此集合的每个项目,我需要确定列的类型,并将其作为以下字符串之一返回:'string''number''boolean''date''datetime''timeofday'。

因此,我执行以下操作:

foreach (DataColumn column in table.Columns) {
  string colType = DermineColumnType(column);
}

. . . . 

string DeterminColumnType(DataColumn column) {
  Type sysType = column.DataType
  if (sysType == typeof(Boolen)
      return "boolean";
  else if (sysType == typeof(Decimal) || sysType == typeof(Double) || sysType == typeof(Int32) ...)
      return "number";
  . . . . . . 
  else
      return "string";

}

问题在于'date','datetime'和'timeofday'值-我在DataColumn类中找不到任何信息,这使我可以确定是否在数据库表中将此列定义为“ date”,“ time” ”或“ datetime”。在所有这些情况下,DataColumn类的DataType属性始终返回System.DateTime类型。有什么方法可以仅基于DataColumn和/或DataTable对象获取此信息,而无需执行其他SQL语句?

c# database
2个回答
1
投票

您可以通过以下代码直接获取数据列的类型

 foreach (DataColumn column in table.Columns) {
  var v = column.GetType()
Return v.ToString()
}

0
投票

日期和时间不是DataColumn的有效数据类型。 DateTime和TimeSpan是唯一与日期/时间相关的数据类型。

似乎您无法仅通过类型判断它是日期还是时间,您将需要查看DateTime对象内部或数据库中的数据。

有关更多信息:http://msdn.microsoft.com/en-us/library/system.data.datacolumn.datatype.aspx

© www.soinside.com 2019 - 2024. All rights reserved.