ОК, я использую GET DATA для извлечения данных с использованием ODBC-соединения. Я собираюсь использовать производственный объект, чтобы многократно автоматизировать тянуть данные, и я бы хотел сделать это с начала года.Ошибка в GET DATA SQL query function
В настоящее время, в том числе это часть SQL подкоманде я манипулировать, чтобы изменить диапазон дат:
between '09/03/2014 12:00:00 AM' and '09/02/2015 11:59:59 PM'
До сих пор я получил эту работу тот же:
between '09/03/2015 12:00:00 AM' and CURDATE() + ' 11:59:59 PM'
Тем не менее, я собираюсь настроить, чтобы я работал, поэтому мне нужно, чтобы он заканчивался в начале предыдущего дня. Таким образом, это будет выглядеть следующим образом:
between {fn CONVERT({ fn DATE_SUB({ fn CURDATE()}, INTERVAL 365 DAY) }, SQL_CHAR) } + ' 12:00:00 AM' and {fn CONVERT({ fn DATE_SUB({ fn CURDATE()}, INTERVAL 1 DAY) }, SQL_CHAR) } + ' 11:59:59 PM'
Ошибка я получаю это говорит:
SQLExecDirect не удалось: [Microsoft] [ODBC SQL Server Driver] [SQL Server] Неправильный синтаксис около " 365' .
Я не могу для жизни меня выяснить, как форматировать 365 по-разному. Если у меня есть дата, введенная для начала диапазона дат, я получаю ту же ошибку для «1» в конце.
EDIT: обновление, поэтому вопрос задан, если это MySQL или SQL Server (мои извинения, у меня мало опыта и я не знал разницы изначально). Тем не менее, это похоже на пару способов.
Как вы можете видеть в приведенной выше ошибке, она ссылается на сервер Microsoft SQL Server. Кроме того, документация из SPSS (программа, в которой я работаю) ссылается на this MS site на использование функций, но они кажутся mysql.
Кроме того, когда я использую эту версию скрипта (используя SQL-серверные функции), я получаю сообщение об ошибке, говорящее, что GetDate не является признанной функцией. Если я переключу его на CURDATE(), то проблема DATADD().
{fn CONVERT({ fn DATEADD(day,-1,{ fn GETDATE() }) }, SQL_CHAR) } + ' 12:00:00 AM' and {fn CONVERT({ fn DATEADD(year,-01,{ fn GETDATE() }) }, SQL_CHAR) } + ' 11:59:59 PM'
Если я отсечь фигурные скобки, и такие, и придерживаться функций SQL сервера, это дает мне ошибку для некорректного синтаксиса около «»
CONVERT(DATEADD(year,-1,GETDATE()), SQL_CHAR) + ' 12:00:00 AM' and CONVERT(DATEADD(day,-1,GETDATE()), SQL_CHAR) + ' 11:59:59 PM'
это mysql или sql-сервер? выглядит как sql-server ... отредактируйте пост – BK435