从SQL Server数据库中提取dateTime

时间:2014-07-24 14:09:30

标签: c# sql sql-server database datetime

我试图将SQL Server数据库中的endDate列与c#中名为highDate的存储变量进行比较。

DateTime highDate = new DateTime(2999, 1, 1);

SqlConnection myConnection = new SqlConnection("My connection string");
SqlCommand myCommand = new SqlCommand("My query including endDate_TS", myConnection);

myCommand.Connection.Open();

SqlDataReader myReader = myCommand.ExecuteReader();

while (myReader.Read())
{
      DateTime endDate = new DateTime(myReader["endDate_TS"]); //something is wrong here
}

if (endDate > highDate)
{
   //do something
}

如何正确格式化我创建的endDate变量以接受SQL Server数据库中的endDate_TS? (endDate_TS是SQL Server DATETIME数据类型)

1 个答案:

答案 0 :(得分:2)

DateTime有几个constructors但没有一个接受一个对象。但myReader["endDate_TS"]返回一个对象。如果它实际上是滴答数(如果_TS表示TimeSpan似乎是什么),您可以使用constructor that takes a long:

int indexOfEndDateTsColumn = myReader.GetOrdinal("endDate_TS");
DateTime endDate = new DateTime(myReader.GetInt64(indexOfEndDateTsColumn));  

但是,括号中的最后一句话表明它实际上是数据库中的datetime,那么您可以直接使用DataReader.GetDateTime

DateTime endDate = myReader.GetDateTime(indexOfEndDateTsColumn);