![](/img/trans.png)
[英]In PHP & MySQL Display date in day month Year Format from database
[英]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.