繁体   English   中英

如何使用 PHP 和 MySQL 从数据库中过滤日期和日期

[英]How to filter day and date from database using PHP and MySQL

我需要使用 PHP 和 MySQL 从数据库中获取日期和日期。 我的表如下:

db_day:

day_id    day_name

  1        Monday

  2        Tuesday

  3        Wednsday

  4        Thursday

  5        Friday

  6        Saturday

  7        Sunday

上面是我的一天表。

db_special:

id    restname       date_from          date_to      day_from  day_to

 1     aaa           2016-09-22        2016-09-26      1         4

 2     bbb           2016-10-19        2016-10-28      2         5

 3     ccc           2016-10-18        2016-10-25      4         7

以上是我的两张表。 假设用户有Tuesday的输入,需要从上表中获取日期范围内的值。这里如果用户只有Tuesday的输入,首先应该计算日期和日期。 如果假设今天是Friday ,它将从下Tuesday开始考虑。

此处用户输入仅是Tuesday因此它将计算今天的日期eg-2016-10-21 ,然后将从上表中过滤值。 根据此示例的预期结果应该是表中的这一行:

bbb 2016-10-19 2016-10-28 2 5

如何编写查询来解决此问题?

您可以尝试使用以下代码:

// $db is PDO instance
// $userDay is user input day

$todayDayId = date('N');
$stmt = $db->prepare('SELECT day_id FROM db_day WHERE day_name=:userDay');
$stmt->execute([':userDay' => $userDay]);
$userDayId = $stmt->fetchColumn();

if($todayDayId > $userDayId) {
    $diff = (7-$todayDayId) + $userDayId;
}
else {
    $diff = $userDayId - $todayDayId;
}

$wantedDate = date('Y-m-d', strtotime('+'.$diff.' day'));

$pdoData = [
    ':wantedDate'  => $wantedDate,
    ':wantedDate2' => $wantedDate,
];
$stmt = $db->prepare('SELECT id, restname, date_from, date_to, day_from, day_to
                      FROM db_special
                      WHERE date_from>=:wantedDate AND date_to<=:wantedDate2');
$stmt->execute($pdoData);
$result = $stmt->fetchColumn();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM