Ошибка преобразования при преобразовании даты и / или времени из символьной строки в управляемом экземпляре. Почему? - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь выполнить следующий запрос в управляемом экземпляре.

SELECT
T.name
FROM sys.tables T
WHERE T.name NOT IN ('ElsevierExtracts')
AND CAST(RIGHT(T.name,6) AS DATE) < DATEADD(DAY,-8,GETDATE())
AND T.type = 'U'

Выдает ошибку следующим образом:

Преобразование не выполнено при преобразовании даты и / или времени изсимвольная строка

Запрос включен в пакет служб SSIS в задачу «Выполнение SQL», но в результате преобразования возникает ошибка.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Используйте TRY_CAST или TRY_CONVERT вместо простого CAST

При использовании условия, подобного TRY_CONVERT(DATE, RIGHT(T.name,6) ) < DATEADD(DAY,-8,GETDATE()), вы не получите ошибку для несоответствия имен таблиц.

Измените свой запросвроде следующего.

SELECT
T.name   
FROM sys.tables T
WHERE T.name NOT IN ('ElsevierExtracts')
AND  TRY_CONVERT(DATE, RIGHT(T.name,6) ) < DATEADD(DAY,-8,GETDATE())
AND T.type = 'U'

Онлайн-демонстрация

0 голосов
/ 18 февраля 2019

Поскольку неверный формат данных столбца таблицы name.

ex:

select CAST(RIGHT('xxxx',6) AS DATE);

получит Conversion failed when converting date and/or time from character string.

, вы должны убедиться, что ваши данныев формате даты, она выглядит следующим образом:

select CAST(RIGHT('20190218',6) AS DATE); --Run Success

Онлайн-демонстрация db <> fiddle

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