按日期查询mysql

时间:2015-02-28 23:42:40

标签: php mysql

我试图按日期查询mysql,我有一个$ today = date的变量(" Y-m-d");

我想用这个来获得post_content'出自我的帖子'每一年的表格。然后我将使用php回显这些数据。

我将如何在世界上这样做?也许一段时间循环改变日期并查询?我发现"从表格中选择字段按日期和#34;并且可以想象这样的声明将存在一个参数,让我们按年查询我的帖子...

澄清我希望每年查询帖子,就像跳时一样。

我已经用这个圈子跑了大约两个星期了,非常感谢帮助!

**编辑当前代码

$sql = "SELECT * FROM posts
            WHERE date > CURDATE() - INTERVAL 1 YEAR
            ORDER BY date DESC";
            // SELECT * FROM conversions WHERE date = CURRENT_DATE() - INTERVAL 1 DAY AND `user_id` = '$user_id';
            $result = $dbc->query($sql);




            if ($result->num_rows > 0) {
                $i=1;
                    // output data of each row
                    while($row = $result->fetch_assoc()) {
                        echo "<li>";
                        echo "<p>".$row['post_date']."</p>";
                        // $clientid.$i =
                        echo "<h3>".$row["post_content"]."</h3>";
                        echo "</li>";
                    }//end while
                $i++;
            } else {
            echo "0 results found in user database!";
            }

2 个答案:

答案 0 :(得分:0)

根据评论中的其他信息,您可能希望使用YEAR间隔在SQL中解决此问题,并且可能按降序日期排序。

SELECT * FROM conversions
WHERE post_date > CURDATE() - INTERVAL 1 YEAR
ORDER BY post_date DESC

答案 1 :(得分:0)

您的PHP代码似乎混淆了列名date(显示在您的WHERE子句中)和post_date(显示为{{1}的列名称你实际上有fetch_assoc()date列吗?

此外,您的post_date条款中的不等式可能是一对一的。

如果你想从今天起最近一年,那就

WHERE

在此之前的那一年,它是

WHERE date >= CURDATE() - INTERVAL 1 YEAR

如果它是您想要的当前日历年,请使用此功能。它有点复杂,因为它允许在WHERE date >= CURDATE() - INTERVAL 2 YEAR AND date < CURDATE() - INTERVAL 1 YEAR 列上使用索引。 date表达式会转换当前日期,例如2015-03-10,进入2015-01-01。

DATE_FORMAT()

同样地,现在之前的日历年是这样完成的。

WHERE date >= DATE_FORMAT(CURDATE(), '%Y-01-01')