使用MySQL选择不超过6个月的行

时间:2015-10-13 19:00:55

标签: mysql sql pdo

我有以下查询,我想从表格中选择所有视频,这些视频的时间不超过所选视频当前时间的6个月:time

我从此获得了此值15638400echo strtotime('+6 month', 0);

表格中的所有时间都是UNIX timestamp格式。

当我运行此查询时,所有视频都会被选中,因为此行不存在。所以我的意思是结果取决于having time - :time < 15638400。如果我删除它,结果是一样的。

将选择一个视频,它的时间戳为X.与第一个视频相比,此查询将返回上传6个月或更早的所有视频。所以6个月或者比X值小。

$query = "select `video_name`, `title`, `yt_id` from `videos`
    where match(`genre`) against (+:genre IN BOOLEAN MODE)
    and match(`country`) against (+:country IN BOOLEAN MODE)
    having time - :time < 15638400
    and `video_name` != :video_name  ORDER BY RAND() limit :limit";

try {
    $run_query = $db->prepare($query);

    $run_query->bindValue(':country', $this->country);
    $run_query->bindValue(':genre', $this->genre);
    $run_query->bindValue(':time', $this->time);
    $run_query->bindValue(':video_name', $this->video_name);
    $run_query->bindValue(':limit', $limit, PDO::PARAM_INT);

    $run_query->execute();

    return $run_query->fetchAll(PDO::FETCH_OBJ);

} catch(PDOException $e) {
    echo $e->getMessage();
}

1 个答案:

答案 0 :(得分:1)

你可以尝试

select id
from your_table
where your_timestamp_column <= (now() - interval 6 month);