Преобразование даты / времени из строковой ошибки при использовании приведения - PullRequest
0 голосов
/ 12 октября 2018

При выполнении запроса Access появляется сообщение об ошибке «Невозможно преобразовать дату / время из символьной строки», но я не уверен, почему.Я использовал этот метод раньше и не было никаких проблем.

SET NOCOUNT ON

DECLARE @StartDate date = '[Start date]', @EndDate date = '[End date]'

SELECT

CAST (Date as Date) as LocalDay
,SalesID 
,Status
,Wait
,PO_Number



FROM
cpo_test.dbo.table_agent_detail_view 

WHERE Date BETWEEN @StartDate And @EndDate
AND SOURCEID=1

Почему Cast не работает в этом случае?

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Проблема не в CAST, а в

DECLARE @StartDate date = '[Start date]', @EndDate date = '[End date]'

Я получаю ту же ошибку в SSMS, если пытаюсь выполнить этот оператор в одиночку.Проблема исчезнет, ​​если я поменяю ее на

DECLARE @StartDate date = '2018-01-01', @EndDate date = '2018-12-31'

Не ясно, чего вы пытаетесь достичь, присваивая строковое значение '[Start date]' переменной date, но вам придетсяпридумайте другой способ сделать это.

Примечание. Вы называете это «запросом доступа», но это не Access SQL, а T-SQL (SQL Server), поэтому я предполагаю, что вы запускаете его каксквозной запрос в Access.Если это так, то имейте в виду, что сквозные запросы ведут себя совершенно иначе, чем обычные запросы Access, поскольку они не обрабатываются оценщиком выражений Access или Access Database Engine, они передаются непосредственно в источник данных ODBC (отсюда и название «pass-через запрос ").

0 голосов
/ 12 октября 2018

Я думаю, что вы пропустили приведение в дате рядом с тем, где условие в вашем запросе.Попробуйте выбрать SELECT

CAST (дата как дата) как LocalDay, SalesID, Status, Wait, PO_Number

FROM cpo_test.dbo.table_agent_detail_view

WHERE CAST (Date as Date) BETWEEN@StartDate And @EndDate AND SOURCEID = 1

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