【问题标题】:SELECT disc before date - SQL在日期之前选择磁盘 - SQL
【发布时间】:2012-01-18 22:28:11
【问题描述】:

我这里有一段代码,但我不确定它是否 100% 有效。所以我想我可以问你,谷歌没有给我一个直接的答案,所以我希望你可以。如果当前日期早于数据库中给出的日期,我想要做的是显示一个 DIV。如果日期是过去的,则不应显示我的 DIV。

PHP/SQL:

$sql = mysql_query("SELECT * FROM `tournaments` WHERE `deadline` > CURDATE()");

这是我正在寻找的正确代码吗?

感谢您的宝贵时间!

【问题讨论】:

  • 可能是的。 deadline 的数据类型是什么?
  • 列deadline的数据类型是什么?
  • 如果是Date,它应该可以正常工作。它将为您提供deadline 明天和之后的所有行(但不是今天或过去)。
  • 如果日期是今天(deadline = CURDATE()),你想做什么?你没有定义...
  • 是的,我也注意到了,但我想我只需要将 = 添加到 =>,对吧?

标签: php mysql sql date


【解决方案1】:

可能想要添加相等,因为它不会显示以今天为截止日期的 div

$sql = mysql_query("SELECT * FROM `tournaments` WHERE `deadline` >= CURDATE()");

否则看起来很好。您将构建逻辑:

<?PHP
$result = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($result) == 0) {
    // nothing to show
    echo "<div>No results</div>\n";
} else {
    // found data to display
    while ($Row = mysql_fetch_array($result)) {
        ?>
        <div style='float:left;width: 150px;'>Data Title</div>\n";
        <div style='float:left; margin-left: 15px;'><?PHP echo $Row['yourdatafield']; ?></div>;
        <div style="clear:both;"></div>
        <?PHP
    }
}
?>

【讨论】:

  • 如果我想用 while() 显示多个 DIV,我应该只用 "while($row=mysql_fetch_array($sql))" 删除 IF 吗?
  • nah .. while 将获取每一行数据并显示它.. 如果您需要多个数据字段,只需添加更多的 echo 行,而其他数据字段仍在 while 内。这回答了你的问题吗?我更新了答案以解决我认为您要问的问题。
  • 我的错...我的意思是添加更多行,正如您在评论中描述的那样。谢谢!
【解决方案2】:

不,你应该使用 DATEDIFF()

"SELECT * FROM `tournaments` WHERE DATEDIFF(`deadline`, CURDATE()) > 0"

【讨论】:

  • 两者都可以,只是一个偏好问题。两种方式仍然是有效的查询。
  • 不,这会更慢。无法使用索引,并且调用了不需要的函数(将为表的每一行调用的函数)。
猜你喜欢
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多