【问题标题】:Comparing DateTime variable to a Date variable from database将 DateTime 变量与数据库中的 Date 变量进行比较
【发布时间】:2013-01-05 16:59:24
【问题描述】:

我正在使用 sql server 2008 并尝试在用户上次登录早于添加到数据库的最后一条消息的日期时显示通知。

我使用asp:panel 来显示隐藏通知文本,它工作得很好,但由于某种原因,我无法弄清楚为什么我使用的Compare 方法没有返回预期的结果。

例如,当我将用户登录设置为01/05/2013 并且数据库中的最近日期为01/04/2013 时,我希望结果是大于零的 int 并转义 if 条件。不幸的是,这并没有发生,并且该方法总是进入 if 条件。

我认为这可能与从DateDateTimecasting 有关;请给点意见?

DateTime userEntry = new DateTime(2012, 01, 05);
DateTime lastMsg = new DateTime();
lastMsg = Convert.ToDateTime(ds.Tables[0].Rows[0]["Date"]);
int compared = DateTime.Compare(userEntry, lastMsg);
if (compared < 0) { notification.Visible = true; }

【问题讨论】:

  • 你说总是进入循环是什么意思?您是否将此代码嵌套在未在此处显示的 for 循环中..?
  • 你在 lastMsg 中获得的价值是多少?是否符合数据库中的值?
  • DJ KRAZE - 每次我用不同的值运行它时,它都会进入 IF 条件,这意味着它不应该进入。 prthrokz = 我进入 lastMsg 的值来自转换为 DateTime 的 sql 表中的 Date 类型列。我希望它能正常工作。不知道如何检查。
  • Debug比较时的值是-1 ...?
  • 另外,当第一个参数早于第二个参数时,DateTime.Compare 返回一个小于 0 的值。根据您的描述,它不会逃避 if 条件,因为 01/05 不早于 01/04

标签: c# asp.net database date datetime


【解决方案1】:

您提到您正在尝试比较“01/05/2013”​​,但代码正在生成 2012 年的日期:

DateTime userEntry = new DateTime(2012, 01, 05); // 2012 date

我怀疑你的意思是:

DateTime userEntry = new DateTime(2013, 01, 05); // 2013 date

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2013-11-10
    • 2016-08-26
    • 2020-10-20
    • 2020-02-08
    • 1970-01-01
    • 2021-01-02
    相关资源
    最近更新 更多