选择在特定日期之前或之后未使用的MySQL记录

时间:2015-03-26 19:18:09

标签: php mysql

我试图从MySQL数据库中选择3个随机记录,其中lastUsedDate(记录上次更新的日期)超出设定的时间段或NULL。

我的逻辑是:

  1. 如果lastUsedDate为NULL,则可以选择此记录。
  2. 如果lastUsedDate比当前日期早7天或更久, 它是随机选择的候选人。
  3. 我想忽略7天及以下的日期。
  4. 我知道 Rand()很慢,但此表只有30条记录。

    SELECT * FROM myTable 
    WHERE lastUsedDate <= DATE_SUB(CURDATE() ,INTERVAL 7 DAY) OR lastUsedDate IS NULL 
    ORDER BY RAND()
    LIMIT 3
    

    最终,30天后,lastUsedDate将不再为NULL,因为所有30将用完。这就是为什么我想在7天后回收行。

    有人指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

尝试

SELECT * FROM myTable 
WHERE IFNULL(lastUsedDate, '0000-00-00') <= DATE_SUB(CURDATE() ,INTERVAL 7 DAY)
ORDER BY RAND()
LIMIT 3

因为你把它标记为PHP我猜你在PHP中运行这个查询,在这种情况下为什么不简化查询并在php中做更多

$date_limit = date("Y-m-d", strtotime("-7 days", time()));
$sql = "SELECT * FROM myTable WHERE IFNULL(lastUsedDate, '0000-00-00') <= '$date_limit' ORDER BY RAND() LIMIT 3";
祝你好运