Выполнять запрос SQL только в течение недели - PullRequest
0 голосов
/ 20 марта 2020

Я знаю, как выполнить запрос SQL к базе данных на основе дат, но как заставить мой сервер выполнять этот запрос только в определенные c раз или в определенные c дней?

У меня есть база данных SQL с действиями (редактировать: эти действия должны отображаться на мониторе в виде цифровых обозначений, поэтому без какого-либо участия пользователя). Некоторые действия выполняются каждый будний день, а некоторые просто в определенный c день. Я поместил ежедневные действия с одинаковой датой - 1900-01-01 - и на данный момент у меня есть SQL Запрос, который всегда отображает эти записи, а также другой запрос, который отображает только записи с текущей даты. :

<tbody>
   <?php
            require_once('../include/dbconn.php');
            $result = $conn->prepare("SELECT * FROM daily WHERE Date_For='1900-01-01' ORDER BY id ASC");
            $result->execute();
            for($i=0; $row = $result->fetch(); $i++){


    ?>
            <tr>
                    <td><label><center><?php echo $row['Child']; ?></center></label></td>
                    <td><label><center><?php echo $row['Activity']; ?></center></label></td>

            </tr>
            <?php } ?>





    <?php
            require_once('../include/dbconn.php');
            $result = $conn->prepare("SELECT * FROM daily WHERE DATE(Date_For) = CURDATE() ORDER BY id ASC");
            $result->execute();
            for($i=0; $row = $result->fetch(); $i++){

    ?>
            <tr>
                    <td><label><center><?php echo $row['Child']; ?></center></label></td>
                    <td><label><center><?php echo $row['Activity']; ?></center></label></td>

            </tr>
            <?php } ?>
    </tbody>

Я знаю, что могу просто добавить ежедневные действия в дату, когда они действительно выполняются, и добавить временной аспект в базу данных, но я просто хотел проверить, есть ли способ написать один набор кода для регулирования доступа, а не добавлять больше работы для ввода данных?

1 Ответ

1 голос
/ 20 марта 2020

Вы можете объединить два запроса в один для немного большей эффективности, а также можете добавить дополнительные разделы в предложение WHERE, чтобы гарантировать, что события "каждый будний день" не будут отображаться при выполнении запроса в выходные дни:

SELECT 
  * 
FROM 
  daily 
WHERE 
  (
    Date_For='1900-01-01' 
    AND DAYOFWEEK(CURDATE()) <> 1 
    AND DAYOFWEEK(CURDATE()) <> 7
  ) 
  OR Date_For = CURDATE() 
ORDER BY 
  id ASC

(Предполагая, что ваши культурные настройки в SQL означают, что воскресенья - это день 1, а субботы - день 7. Если нет, измените числа.)

...