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

本文关键字:日期 比较 Datetime now SQL | 更新日期: 2023-09-27 18:00:42

我正在尝试在c#上编写代码,将SQL表(表:items,列"endTime")上的日期与datetime.now以及结果显示图像进行比较。

示例:

如果列表上的时间在现在的时间之前。。因此在aspx图像1上显示,否则显示图像2。

我已经尝试过通过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);

但我犯了错误,但我相信这是回报。

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

使用以下内容代替if (d < DateTime.Now)if (d < DateTime.Now.Date)

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

  1. 您的sql查询返回了什么(我相信是滴答声)
  2. 如何将int转换为DateTime,请出示代码
  3. 将SqlConnection封装在using()块中,如下所示:
using (SqlConnection connection = new SqlConnection(...))

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

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