Php 按日期查询mysql
我试图按日期查询mysql,我有一个变量$today=dateY-m-d 我想用它来从我上一年的“posts”表中获取“post_content”。然后,我将使用php回显这些数据 我到底要怎么做?也许需要一段时间来更改日期并查询它?我从表中找到了select字段order by DATEFILD,并设想这样一个语句存在,它带有一个参数,允许我们按年份查询我的posts表 为了澄清这一点,我希望每年查询一次帖子,就像时间跳跃一样 我已经用它运行了大约两周了,非常感谢您的帮助 **编辑当前代码Php 按日期查询mysql,php,mysql,Php,Mysql,我试图按日期查询mysql,我有一个变量$today=dateY-m-d 我想用它来从我上一年的“posts”表中获取“post_content”。然后,我将使用php回显这些数据 我到底要怎么做?也许需要一段时间来更改日期并查询它?我从表中找到了select字段order by DATEFILD,并设想这样一个语句存在,它带有一个参数,允许我们按年份查询我的posts表 为了澄清这一点,我希望每年查询一次帖子,就像时间跳跃一样 我已经用它运行了大约两周了,非常感谢您的帮助 **编辑当前代码 $
$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!";
}
从您评论中的附加信息来看,您似乎希望在SQL中使用一年的时间间隔来解决这个问题,并且可能要按降序日期排序
SELECT * FROM conversions
WHERE post_date > CURDATE() - INTERVAL 1 YEAR
ORDER BY post_date DESC
php代码似乎混淆了WHERE子句中显示的列名date和fetch_assoc子句中显示的列名post_date。你真的有日期列和发布日期列吗 而且,WHERE子句中的不等式看起来可能相差1 如果您想获取从今天开始的最近一年,则
WHERE date >= CURDATE() - INTERVAL 1 YEAR
在那之前的一年,它是
WHERE date >= CURDATE() - INTERVAL 2 YEAR
AND date < CURDATE() - INTERVAL 1 YEAR
类似地,当前日历年之前的日历年也是这样做的
WHERE date >= DATE_FORMAT(CURDATE(), '%Y-01-01') - INTERVAL 1 YEAR
AND date < DATE_FORMAT(CURDATE(), '%Y-01-01')
这是我第一次发现它,它可能会很有成效。。。从转换中选择*,其中日期=当前日期-间隔1天;到目前为止你做了什么?还有,你的问题不是很清楚$今天会给你今天的日期。那么,您想根据$today's year查找上一年的帖子吗?我目前正在尝试运行此查询:从转换中选择*from date=CURRENT_date-INTERVAL 1 DAY和user_id='$user_id'$today引用当前日期,以便我可以,是的,根据$today's Years查找上一年的帖子我肯定这就是我使用的,但是我得到了,注意:在我的while循环*代码中使用$result试图获取非对象的属性,在上面的原始帖子中,我不明白为什么我不能工作,尽管使用while循环,就像我以前使用这个新代码一样…等等。。。我需要编辑一年前的帖子!它是空的!我把日期和邮寄日期搞混了。谢谢你的帮助!谢谢你抓住我的矛盾,我确实混淆了日期和发布日期。
WHERE date >= DATE_FORMAT(CURDATE(), '%Y-01-01') - INTERVAL 1 YEAR
AND date < DATE_FORMAT(CURDATE(), '%Y-01-01')