Проблема даты и времени в MariaDB SQL-запросе - PullRequest
0 голосов
/ 28 октября 2019

Я конвертирую некоторые запросы SQL, которые мы выполняли через SQL Anywhere, для работы с новой средой MariaDB. Вот один из запросов, который доставляет мне неприятности:

UPDATE
  rfo.client_notes_details
SET
  client_notes_details.equip_status = 59
WHERE
  (
    (
      (client_notes_details.equip_status) BETWEEN 4
      AND 58
    )
    AND (
      (client_notes_details.date_of_visit) < NOW() - 30
    )
  );

Когда я запускаю вышеуказанный запрос в средстве проверки SQL, он работает. Однако, когда я проверяю это в нашей базе данных MariaDB с помощью SQL Workbench, я получаю следующую проблему datetime:

1292 Неправильное значение даты и времени: '20191028072188' Соответствующие строки: 0 Изменено: 0 Предупреждения: 1

Как мне обновить этот запрос, чтобы использовать формат даты и времени, подходящий для MariaDB?

1 Ответ

2 голосов
/ 28 октября 2019

Использование interval:

client_notes_details.date_of_visit < NOW() - INTERVAL 30 DAY

MySQL и MariaDB имеют тенденцию преобразовывать значения даты / времени в строки или числа в зависимости от контекста. В этом случае он видит, что число вычитается, поэтому он преобразует значение в число, и результат не является действительной датой.

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