【问题标题】:Pulling dateTime from SQL Server database从 SQL Server 数据库中提取 dateTime
【发布时间】:2014-07-24 14:09:29
【问题描述】:

我正在尝试将 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 数据类型)

【问题讨论】:

  • 你所说的“这里有问题”是什么意思,你有没有例外,是你的专栏null,在转换之前尝试将它与DBNull.Value进行比较。

标签: c# sql sql-server database datetime


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    • 2012-12-21
    • 2021-12-23
    相关资源
    最近更新 更多