确定DataColumn是否仅为日期

时间:2013-10-02 03:48:46

标签: c# database

我有一个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”,“时间“或”日期时间“。 DataColumn类的DataType属性始终为所有这些情况返回System.DateTime类型。 有没有办法在不执行其他SQL语句的情况下仅根据DataColumn和/或DataTable对象获取此信息?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

您似乎无法从类型中分辨出它是日期还是时间,您需要查看DateTime对象内部或数据库中的数据。

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