Как отобразить данные с даты окончания, используя интервал 3 дня? - PullRequest
0 голосов
/ 03 мая 2019

У меня есть какая-то запись в базе данных, чтобы отправить уведомление пользователю, но условия выглядят так,

здесь моя дата окончания 06-05-2019, а теперь текущая дата 03-05-2019 или 01-05-2019, и я хочу отправить уведомление до 3 дней с даты окончания до фактической даты окончания. Например, моя дата окончания 06-05-2019 какого-то события, тогда я хочу отправить уведомление о датах 04-05-2019, 05-05-2019, 06-05-2019.

Мой код запроса cakePHP находится здесь:

$offer_notify_second = $this->NotificationStore->find('all', array(
                'contain' => array(),          
                'fields' => array('NotificationStore.id','NotificationStore.role_id','NotificationStore.user_id','NotificationStore.notification_type','NotificationStore.notification_app_display_type','NotificationStore.link','NotificationStore.offer_id','NotificationStore.offer_type'), 
                'conditions' => array('DATE_SUB(NotificationStore.end_date, INTERVAL 3 DAY)' => date('Y-m-d'), 'NotificationStore.user_id' => $this->request->data['user_id'], 'NotificationStore.notification_type' => OFFER_NOTIFICATION),
            ));
```

1 Ответ

2 голосов
/ 03 мая 2019

Я поделюсь необработанным фрагментом запроса, вы можете сопоставить его с CAKEPHP

WHERE NotificationStore.end_date >= DATE(NOW() + INTERVAL 3 DAY) + INTERVAL 0 SECOND  AND NotificationStore.end_date >= CURDATE();

Часть 1

NotificationStore.end_date >= DATE(NOW() + INTERVAL 3 DAY) + INTERVAL 0

Это означает, что СЕЙЧАС + 3 дня должно быть больше даты окончания
например

текущий - 2019-05-02, а следующие 3 дня - 2019-05-05, затем условие не выполняется
текущий - 2019-05-03, а следующие 3 дня - 2019-05-06, затемусловие выполнено

Часть 2

NotificationStore.end_date >= CURDATE()

Это означает, что end_date должен быть больше, чем cur_date, чтобы удовлетворить предстоящий 3-дневный диапазон, иначе он всегда будет больше с первым условием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...