我试图将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
数据类型)
答案 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);