Все, я не могу понять это после 5 часов попыток и поиска здесь на работе.
У меня есть R-скрипт, выполняющий SQL-скрипт.Я использовал пакет (infuser) для заполнения предварительно выбранных полей (начало) и (остановка) в моем сценарии SQL.
library(infuser)
SAPF1query <- infuse("SELECT TOP (1000) [PKID]
,[Equipment]
,[Order]
,[ActStartDate]
,[ActFinDate]
,[ActStartTime]
,[ActFinTime]
FROM [sapData].[dbo].[SAP_IW_47]
where Equipment IN ({{Feeder}})
and OrdCat = 'ZWAR'
and AcTyAct like '%TUT'
and ActStartDate BETWEEN ({{start}}) AND ({{stop}})
", Feeder = WTGs, start = startdate, stop = stopdate)
Я добавляю следующие элементы: Feeder = WTGs, start = startdate, stop = enddate
Мои начальные даты и eddates выглядят так.
startdate <-'2018-08-01' #enter START-dates for report by month
enddate <-'2018-08-31' #enter END-dates for report by month
SD <- as.Date(startdate, tz="UTC")
ED <- as.Date(enddate, tz="UTC")
Iпробовал оба вектора для начала и конца, чтобы влить в мой сценарий SQL, но безрезультатно.Я продолжаю получать ошибки, что SQL не может распознать даты начала и окончания.
Я пробовал другую версию as.POSIX, format.Date, но не могу ее получить.
Мой вектор даты выглядит так, когда я печатаю «2018-08-01».
Мне нужно, чтобы моя дата была в типе сценария SQL, например: «2018-08-01»
С этим форматом «ГГГГ-ММ-ДД» я могу влить в свой R/ SQL скрипт для фильтрации моего SQL-запроса.
Спасибо, Ваша помощь пока, но вот теперь моя ошибка SQL.Я постараюсь убедиться, что моя 64-битная версия верна и обновлена.Еще немного нового здесь и прошу прощения за ошибки.
РЕДАКТИРОВАТЬ 1:
Спасибо, Булат.Ваше предложение сработало, но я получаю эту ошибку сейчас.
Error in executeQuery(conn, query, verbose, ...) :
22003 248 [Microsoft][ODBC SQL Server Driver][SQL Server]The conversion of
the
nvarchar value '3000000001' overflowed an int column.
[RODBC] ERROR: Could not SQLExecDirect 'SELECT TOP (1000) [PKID]
,[Equipment]
,[Order]
,[ActStartDate]
,[ActFinDate]
,[ActStartTime]
,[ActFinTime]
FROM [sapData].[dbo].[SAP_IW_47]
where Equipment IN (84010,84039,84029,84031,84022,84032,84038,84025,84017,84014,84027,84011,84015,84044,84034,84041,84035,84040,84037,84013,84042,84043,84007,84004,84002,84036,84030,84026,84016,84020,84012,84019,84023,84024,84018,84028,84033,84021,84008,84003,84005,84006,84009)
and OrdCat = 'ZWAR'
and AcTyAct like '%TUT'
and ActStartDate BETWEEN '2018-08-01' AND '2018-08-31'
'
РЕДАКТИРОВАТЬ: 2 исправлена ошибка mySQL.
Я исправил свою проблему с моими кодами ошибок, которые я получал.Это происходит потому, что в базе данных / таблице столбец [Equipment] хранится как символ, а не как целое число, как я обычно ожидаю.
Так что мне нужно было изменить переменную "WTGs", которая была числовым вектором,к символьному вектору в кавычках.
Я сделал это, заключив в кавычки отдельные элементы WTG с помощью '' или "".Мне пришлось взглянуть на функцию "shQuote", которая является частью базового пакета.Конечно, вы можете добиться этого только с помощью функций «вставки», но я считаю, что shQuote более понятен.
Мой оператор SQL должен выглядеть примерно так: **** WHERE [Equipment] IN ('8001', '8002', '8003')
Я использовал приведенный ниже код в R и включил его перед генерацией оператора "SAPF1query".
WTGs <- paste0(shQuote(WTGs, type = 'sh'), collapse = ",")