【问题标题】:Compare Datetime.now to date on SQL table将 Datetime.now 与 SQL 表上的日期进行比较
【发布时间】:2011-06-30 13:59:37
【问题描述】:

我正在尝试在 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);

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

【问题讨论】:

  • 很抱歉,I got error 无法很好地描述您遇到的问题。
  • “我有错误”的含义尽可能模糊,另外还有一个好处是英语很糟糕。什么错误/什么行/等等。
  • 这段代码不完整,没有意义...
  • 问题出在 vwd 上: if(d
  • @Mannimarco 谢谢你,但不是每个人的英语都像你一样好......我正在尽我所能写。谁可以尝试帮助我将不胜感激。

标签: c# asp.net sql sqlcommand


【解决方案1】:

代替if (d &lt; DateTime.Now) 使用这个:if (d &lt; DateTime.Now.Date)

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 问题出在 vwd 上: if(d
    • 只需将您的签名设为私有 DateTime endTime(out DateTime lastDate) 并将其他代码更改为 lastDate = (DateTime)command2.ExecuteScalar(); 还有,为什么您的命令会运行两次?
    • 投DateTime的时候要小心,看看SqlDateTime类
    • 谢谢。我的错误是因为我从其他适用于其他事物的代码中复制了它。
    【解决方案3】:
    1. 你的 sql 查询返回了什么(我相信滴答声)?
    2. 如何将int 转换为DateTime,请出示代码
    3. 将SqlConnection 包含在using() 块中,如下所示:
    using (SqlConnection connection = new SqlConnection(...))
    

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

      • 我还有其他问题可能会给我解决方案。我该怎么办: if (lable.text = "end") ... image1.visble; ?我如何检查标签上是否写了一些东西?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-22
      相关资源
      最近更新 更多