【问题标题】:MySQL selecting particular dates for outputMySQL为输出选择特定日期
【发布时间】:2020-11-08 23:33:51
【问题描述】:

为了好玩,我正在制作一个粗略的约会安排程序。

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

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

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

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

页面使用 PHP 和使用 PDO 的 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);

【问题讨论】:

  • 考虑将日期和时间存储为单个实体
  • 并了解 sql 注入以及准备和绑定查询的重要性
  • @Strawberry 为什么会更好?

标签: php mysql sql datetime where-clause


【解决方案1】:

如何告诉 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

【讨论】:

  • current_date是之前定义的函数还是变量?
  • @user3831093:这是一个 MySQL 内置函数,返回当前日期(没有时间):dev.mysql.com/doc/refman/8.0/en/…
猜你喜欢
  • 2011-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-29
  • 2016-11-26
  • 2011-08-29
  • 1970-01-01
相关资源
最近更新 更多