У меня есть промежуточная область, в которой я пытаюсь проверить данные, проходя через множество итераций проверки. В настоящее время я борюсь с некоторыми проблемами с столбцом nvarchar (50), который я пытаюсь преобразовать в дату.Ошибка преобразования даты TSQL - моя неспособность понять набор результатов
Я знаю об общей ловушке плохо сформированных строк, которые не соответствуют дате преобразования, так что вот что я делаю.
SELECT *
FROM (SELECT * FROM STAGE_TABLE WHERE ISDATE(DATE_COL) = 1)
WHERE CAST(DATE_COL AS DATE) < GETDATE()
... это приводит к стандарту «Конверсия не удалась при преобразовании даты и/или времени из символьной строки».
Но вот здесь вещи становятся странными для меня. Если изменить вышеуказанное заявление на следующее:
SELECT CAST(DATE_COL AS DATE)
FROM (SELECT * FROM STAGE_TABLE WHERE ISDATE(DATE_COL) = 1)
... все хорошо, и все, что я сделал перемещаются бросок из ИНЕК выбора пункта. Я думаю, что я упускаю что-то на фундаментальном уровне.
FWIW, если бы я должен был вытащить все записи из STAGE_TABLE
без предложения WHERE ISDATE
, у меня были бы плохо сформированные строки даты.
Любые идеи очень ценятся!
Блестящий! Я все еще так слаб с планами запросов ... :(Итак, я предполагаю, что могу добавить подсказку, чтобы заставить dbe полностью оценить внутренний выбор в первую очередь? Если это так - любые советы о том, как я могу это сделать ? –
Я не думаю, что есть подсказка - ответ обновлен – RichardTheKiwi
Лучший опыт переполнения стека на сегодняшний день. –