Ошибка перемещения SQL-запроса из Postgres в MariaDB - PullRequest
0 голосов
/ 17 января 2019

Это часть запроса, которая прекрасно работает в PostgreSQL (в приложении Django):

CASE WHEN abc.name = 'foo bar'
    AND user.first_login <= (now() - interval '{new_user_interval} day') THEN 0
    ELSE COALESCE(abc.rank, 0)
END AS interesting_value,

Однако, когда я пытаюсь запустить его в базе данных MariaDB, я получаю эту ошибку:

У вас ошибка в синтаксисе SQL; обратитесь к руководству, соответствующему вашей версии сервера MariaDB, чтобы узнать правильный синтаксис для использования рядом с ') THEN 0 \ n ELSE COALESCE (abc.rank, 0) \ n END ASинтересно' в строке 13 "

Похоже, что в синтаксисе отлично работает синтаксис оператора оператора MySQL . Почему происходит эта ошибка?

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Причиной ошибки были одинарные кавычки вокруг {new_user_interval} day.Но см. Ответ @ Георга выше, который я принял, поскольку он указал мне правильное направление.

0 голосов
/ 17 января 2019

Непосредственное вычитание интервалов - это вещь PostgreSQL, не работает на MySQL / MariaDB.

Вместо этого вы можете использовать функцию DATE_SUB () .

Пример: SELECT DATE_SUB(NOW(), INTERVAL 10 DAY);

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