将Datetime.now与SQL表上的日期进行比较

时间:2011-06-30 13:59:38

标签: c# asp.net sql sqlcommand

我正在尝试在c#上编写代码来比较我在SQL表上的日期(表:项目,列“endTime”)与datetime.now以及结果 - 显示图像。

示例:

如果列表上的时间早于现在的时间..那么在aspx image1上显示,否则显示image2。

我已经尝试通过sql命令执行此操作:

    private DateTime endTime(out int lastDate)
{
    SqlConnection connection = new SqlConnection("Data Source=******;Initial Catalog=******;User ID=*****;Integrated Security=False;");
    string commandtext = "SELECT TOP(1) endTime FROM items";
    SqlCommand command = new SqlCommand(commandtext, connection);
    connection.Open();
    SqlCommand command2 = new SqlCommand(commandtext, connection);
    lastDate = (int)command2.ExecuteScalar(); 
    connection.Close();
    return ...
}

但我对返回有问题,并且执行方法......:

            int d; 
        Console.WriteLine(endTime(out d));
        if (d < DateTime.Now)
        {
            image1.Visible = true;

        }
        else
        {
            image2.Visible = true;
        }
        Console.WriteLine(d);

但是我得到了错误,但我相信它来自回归。

4 个答案:

答案 0 :(得分:2)

而不是if (d < DateTime.Now)使用此:if (d < DateTime.Now.Date)

答案 1 :(得分:0)

你不应该从查询中输出DateTime而不是int吗?此外,堆栈跟踪/调试器应该为您提供异常的行号。你可以发布堆栈跟踪吗?

答案 2 :(得分:0)

  1. 你的SQL查询返回什么(我相信滴答声)?
  2. 如何将int转换为DateTime,请显示代码
  3. using()块中包含SqlConnection,如下所示:
  4. using (SqlConnection connection = new SqlConnection(...))
    

答案 3 :(得分:0)

我建议让数据库在sql中进行日期比较。

可以在查询中将SYSDATE与EndTime进行比较,并且您可以不返回不匹配的行(这允许您平等地处理结果集中的每一行),或者在返回集中检查一个简单值看看时间是否正确。