Mysql сравнивает, если дата не менее чем через два дня

avatar
user16542536
9 августа 2021 в 01:23
89
2
0

У меня есть таблица, в которой есть поле с именем даты и типом даты.

У меня есть строка с датой = 2021-08-11, я хочу выполнить обновление, если table.date более чем на 2 дня от текущей, обновить ее, иначе пропустить.

update tableA set count = 10 where id=26 and date > (DATE(NOW()) + INTERVAL 2 DAY);
//date is 2021-08-11.

запрос возвращает: Запрос выполнен успешно, затронуто 0 строк (0,00 сек.) Совпало строк: 0 Изменено: 0 Предупреждений: 0

Кто-нибудь может мне помочь!? Мы будем очень признательны за любую помощь!

Источник
Gordon Linoff
9 августа 2021 в 01:25
1

Возможно у вас проблема с часовым поясом.

user16542536
9 августа 2021 в 01:43
0

Да .. Это проблема с часовым поясом, на сервере сейчас 2021-08-09 .. Спасибо. После переустановки часового пояса сервера и перезапуска сервера mysql теперь все хорошо. Спасибо еще раз!

Ответы (2)

avatar
AIMIN PAN
9 августа 2021 в 03:26
0

Ну, я не вижу никаких проблем — почему вы ожидаете обновления строки?

Сегодня 9/8/2021, добавить 2 дня 11/8/2021

Ваша дата 11/8/2021, поэтому дата > на 2 дня позже 11/8/2021 > 11/8/2021 неверна.

Чтобы обновление произошло, вам нужно добавить некоторые данные как 2021/8/12 или позже.

user16542536
9 августа 2021 в 15:09
0

Время, когда я вызвал запрос, было 2021-08-08 локально, что (2021-08-08) + 2 дня = 2021-08-10, а дата в строке — 2021-08-11, что должно вызвать истинный случай , но проблема заключалась в том, что сервер mysql имел часовой пояс 2021-08-09, что вызвало ложный случай. Так что это проблема часового пояса сервера, а не самого запроса.

avatar
the_coding_cat
9 августа 2021 в 01:36
0

Попробуйте использовать DATE_ADD и заключите переменную date внутрь DATE(). И вы можете использовать CURDATE вместо DATE(NOW()), но они также одинаковы, просто чтобы сократить ваш запрос.

UPDATE tableA set count = 10 
WHERE id=26 and DATE(`date`) > DATE_ADD(CURDATE, INTERVAL 2 DAY);
user16542536
9 августа 2021 в 01:44
0

Спасибо, это новое для меня, я постараюсь следовать этому пути по другим моим запросам.