Я пытаюсь динамически передавать функцию даты в openquery на SQL Server. Мой SQL Server подключен к базе данных Oracle OLEDB.Что такое синтаксис для функций даты в openquery - OleDB через SQL Server
Когда я запускаю мой запрос с использованием на основе Oracle функции дат, работает мой запрос, но не возвращает данных:
SELECT *
FROM OPENQUERY([SMA], 'SELECT B.SQL_DATE
FROM DIM_DATE B
WHERE B.SQL_DATE = current_DATE');
Когда я запускаю этот запрос с помощью функции даты на основе SQL Server, я получаю следующее сообщение об ошибке :
SELECT *
FROM OPENQUERY([SMA], 'SELECT B.SQL_DATE
FROM DIM_DATE B
WHERE B.SQL_DATE = ''GETDATE()''');
OLE DB провайдер "OraOLEDB.Oracle" для связанного сервера "SMA" возвращается сообщение "ORA-01841: (полный) год должен быть между -4713 и +9999, а не быть 0".
Я думаю, что я должен использовать синтаксис на основе SQL Server (в отличие от синтаксиса Oracle), но не уверен, как может работать оператор current_DATE?
Любая помощь была бы высоко оценена!
«GETDATE()» заменяется представлением даты синтаксического анализатора SQL Server, поскольку оценка не находится в строковом литерале, тогда как current_DATE отправляется по проводке к подключенному серверу и анализируется как sql. Проверьте свой язык и убедитесь, что значения даты выровнены. Вы можете заставить определенное значение даты, и это звучит так, вот что вам нужно сделать здесь. –
Таким образом, часть проблемы - это поле даты, на которое я ссылаюсь, является меткой времени. Если я запрашиваю базу данных за пределами открытого запроса, я получаю это: SELECT B.SQL_DATE FROM [SMA] .. [SMA]. [DIM_DATE] B WHERE B.SQL_DATE = Преобразование (дата, GETDATE()); Однако я не могу понять, какой набор тиков мне нужно использовать, или если можно передать эту функцию через openquery. –