Сообщение 241, Уровень 16, Состояние 1, Строка 1 Преобразование не удалось при преобразовании даты и / или времени из строки символов - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть два запроса T- SQL, которые используют Substring и Charindex для анализа текста в столбце nvarchar. Они выполняются сами, но когда я пытаюсь объединить их, я получаю:

Сообщение 241, Уровень 16, Состояние 1, Строка 1
Преобразование не удалось при преобразовании даты и / или времени из строки символов .

Я думал, что это может быть из-за ошибки приведения datetime, поэтому я удалил оператор приведения из этого кода:

CAST(CONCAT(SUBSTRING(ActivityDetail, CAST((CHARINDEX('Date/Time:', ActivityDetail) + 11) AS INT), 10), SUBSTRING(ActivityDetail, CAST((CHARINDEX('Date/Time:', ActivityDetail) + 23) AS INT), 9)) AS DATETIME) AS 'Start Time'

Я снова выполнил запрос и получил это ошибка:

Сообщение 8114, уровень 16, состояние 5, строка 1
Ошибка преобразования типа данных varchar в bigint.

I не есть CAST оператор, который пытается преобразовать из varchar в bigint в моем коде.

I do имеет оконную функцию, которая использует созданный столбец datetime для назначьте номера строк, чтобы я мог фильтровать для rn = 1, что является самым последним результатом.

ROW_NUMBER() OVER (PARTITION BY [UnitId] ORDER BY [Start Time] DESC, UnitID DESC) AS rn

Что я делаю не так?

Может предоставить больше кода, но большая часть выглядит как это:

CASE 
WHEN SUBSTRING([ActivityDetail],cast((CHARINDEX('Laser A BkGnd Brightness',[ActivityDetail]) - 15) as int),1) = '1' THEN SUBSTRING([ActivityDetail],cast((CHARINDEX('Laser A BkGnd Brightness',[ActivityDetail]) - 15) as int),3)
ELSE SUBSTRING([ActivityDetail],cast((CHARINDEX('Laser A BkGnd Brightness',[ActivityDetail]) - 14) as int),2)
END as 'Laser A Background Brightness'

1 Ответ

0 голосов
/ 12 февраля 2020

Поиск второй ошибки после публикации. Пришлось сделать с порядком столбцов в двух запросах.

Был один запрос с:

SELECT *, rn FROM

А другой с:

SELECT rn, * FROM
...