如果时间过去了

时间:2010-12-15 10:28:03

标签: php mysql time

$nextWeek = time() + (7 * 24 * 60 * 60); 

将其添加到数据库中。

我想选择*其中time =当前时间()或将来......而不是过去。

我希望*从时间不在过去的DB中选择..它是将来的。或者在场。

SELECT * FROM affbanners WHERE timedate=what and active=1 order by rand() limit 1

我希望时间日期存在或未来而不是过去。这意味着时间不应该过去。

timedate

定义
$nextWeek = time() + (7 * 24 * 60 * 60);

2 个答案:

答案 0 :(得分:3)

如果您的数据库服务器的时钟是正确的,您只需使用以下形式的查询:

SELECT * FROM <table name> WHERE <time field> >= NOW();

然而,为了保持你的问题,我会去...

$nextWeek = time() + (7 * 24 * 60 * 60); 
$queryString = 'SELECT * FROM affbanners WHERE active=1 AND timedate >= "'.$nextWeek.'"' ORDER BY RAND() LIMIT 1';

也就是说,您可能想要考虑是否希望以“平衡”(而非简单随机)的方式选择横幅。 (即:每个横幅都有一个大致相似的观看率。)

为此,您需要:

  1. 为每个横幅添加“查看”计数(在查看横幅时会增加)。如果您正在跟踪这些内容,您当然可以使用点击等。
  2. 使用类似...

    的查询

    SELECT * FROM affbanners WHERE active = 1 AND timedate&gt; =“'。$ nextWeek。'”'ORDER BY view_count ASC LIMIT 1

  3. 通过这样做,您可以平衡一段时间内的观看次数。

    <强>更新

    如果是这种情况,我很想在数据库中创建startdate和enddate字段(在创建横幅时填充)并使用类似的查询...

    SELECT * FROM affbanners WHERE active=1 AND startdate >= NOW() AND enddate <=  DATE_ADD(NOW(), INTERVAL 1 WEEK) ORDER BY view_count ASC LIMIT 1
    

    您当然也需要跟踪视图,点击等。

    那就是说,这是一个非常解决的问题,所以使用像OpenX这样的东西可能更容易。 (你可以下载一个开源版本。)

答案 1 :(得分:0)

您可以在PHP脚本中计算当前时间并将其放入$ time。然后进行像

这样的查询

SELECT * FROM affbanners WHERE timedate&gt; = $ time and active = 1 order by rand()

这应该会给你所有横幅的时间设置为现在或将来。