首页 > 解决方案 > MySQL为输出选择特定日期

问题描述

我正在制作一个粗略的约会计划以取乐。

我有一个页面将显示可用的约会。

我只想显示 30 天后的约会,也就是一个月并且未预订,也就是 user_id = 0。

预订的约会具有与其帐户相关联的 user_id。

我被困在如何告诉 MySQL 只显示日期在今天和从今天起一个月之间的约会。

该页面使用使用 PDO 的 PHP 和 MySQL。

我对 PDO 最满意,这就是我使用它的原因。

我所使用的是 DATE_ADD()、CURDATE() + INTERVAL,以及我在页面上的内容

<?php
    //opens database path
    $db = new PDO(DB_PATH, DB_LOGIN, DB_PW);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    $today = array(date(Y), date(m), date(d));
    
    $result = $db->query("
SELECT * 
  FROM appt 
 WHERE DAY(date) < $today[3] 
   AND MONTH(date)=today[2]+1 
 ORDER 
    BY date DESC
     , time DESC
");
    foreach($result as $row)
    {
        print "<tr>";
        print "<td><input type='checkbox' name='id[]' value=".$row['id']."></td>";
        print "<td>".$row['date']."</td>";
        print "<td>".$row['time']."</td>";
        print "<td>".$row['doctor']."</td>";
        print "</tr>";
    }
  
  
  
  ?>

数据库将这样创建

CREATE TABLE appts
  (key int unsigned not null auto_increment primary key
  , user_id int unsigned
  , date date
  , time time
  , doctor tinytext);

标签: phpmysqlsqldatetimewhere-clause

解决方案


如何告诉 MySQL 只显示日期在今天和从今天起一个月之间的约会?

您可以使用 MySQL 日期算术。我想你想要:

SELECT * 
FROM appt 
WHERE date >= current_date - interval 1 month
  AND date <  current_date + interval 1 day
ORDER BY date DESC, time DESC

推荐阅读