#mysql #sql-server
#mysql #sql-сервер
Вопрос:
Пытаюсь преобразовать эту инструкцию MSSQL 2012R2 в MySQL 5.7
SELECT SUM(Cost Credit_Amount) As Daily_Cost FROM Google_Costing
WHERE Date BETWEEN DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE() -2), 0) AND
DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE() -2) 1, 0)
Я пытался заменить DATEADD
на DATE_ADD
и DATEDIFF
на TIMESTAMPDIFF
, но по-прежнему безуспешно. Приветствуется любая помощь.
Я получаю сообщение об ошибке:
Неправильный подсчет параметров при вызове встроенной функции ‘DATEDIFF’
Поэтому я меняю инструкцию на:
SELECT SUM(Cost Credit_Amount) As Daily_Cost FROM Google_Costing
WHERE Date BETWEEN DATE_ADD(MONTH, TIMESTAMPDIFF(MONTH, 0, GETDATE() -2), 0) AND
DATE_ADD(MONTH, TIMESTAMPDIFF(MONTH, 0, GETDATE() -2) 1, 0)
На этот раз я получаю сообщение об ошибке:
У вас ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с ‘TIMESTAMPDIFF(MONTH, 0, GETDATE() -2), 0) И DATE_ADD(MONTH, TIMESTAMPDIFF(MONT’ в строке 2
Комментарии:
1. Какую ошибку это выдает?
2. У вас есть имя столбца
MONTH
? Если это так, попробуйте заключить это в квадратные скобки[MONTH]
или отметить галочками. Я рекомендую не использовать зарезервированные слова для имен столбцов…3. Кроме того, смотрите
DATE_ADD
ссылку для правильного использования: dev.mysql.com/doc/refman/5.5/en /…4. Нет столбца с именем month, при использовании MSSQL DATEADD позволяет первой позиции определять интервал, в данном случае МЕСЯЦ. Я проверю ссылку на MSQL, чтобы посмотреть, смогу ли я это выяснить.
5. Какой результат вы ожидаете от этого запроса?
Ответ №1:
Попробуйте эти файлы cookie…
SELECT SUM(Cost Credit_Amount) As Daily_Cost FROM Google_Costing
WHERE Date BETWEEN DATE_FORMAT(NOW() ,'%Y-%m-01')
AND DATE_ADD(CURDATE(), INTERVAL -2 DAY)
Комментарии:
1. Это сработало точно так, как планировалось! Большое вам спасибо за помощь!