Я ищу что-то вроде TRYCAST в TSQL или эквивалентный метод / хак.
В моем случае я извлекаю некоторые данные даты из столбца xml.
Следующий запрос выдает «Ошибка арифметического переполнения при преобразовании выражения в тип данных datetime». если часть данных, найденная в xml, не может быть преобразована в datetime (в данном конкретном случае, дата «0001-01-01» в некоторых случаях). Есть ли способ обнаружить это исключение до того, как оно произойдет?
select
[CustomerInfo].value('(//*:InceptionDate/text())[1]', 'datetime')
FROM Customers
Пример того, чего я пытаюсь достичь в псевдокоде с воображаемой функцией tsql TRYCAST(expr, totype, defaultvalue)
:
select
TRYCAST(
[CustomerInfo].value('(//*:InceptionDate/text())[1]', 'nvarchar(100)'),
datetime,
null)
FROM Customers