Je cherche quelque chose comme TRYCAST dans TSQL ou une méthode équivalente/hack.Fonte de date indicative dans tsql
Dans mon cas, j'extrais des données de date d'une colonne xml.
La requête suivante lève "Arithmetic overflow error converting expression en type de données datetime". si la donnée trouvée dans le fichier xml ne peut pas être convertie en datetime (dans ce cas précis, la date est "0001-01-01" dans certains cas). Existe-t-il un moyen de détecter cette exception avant qu'elle ne se produise?
select
[CustomerInfo].value('(//*:InceptionDate/text())[1]', 'datetime')
FROM Customers
Un exemple de ce que je suis en train de réaliser en pseudocode avec une fonction tsql imaginé TRYCAST(expr, totype, defaultvalue)
:
select
TRYCAST(
[CustomerInfo].value('(//*:InceptionDate/text())[1]', 'nvarchar(100)'),
datetime,
null)
FROM Customers
Ce n'est pas une solution très générale, mais cela fonctionne très bien dans ce cas précis, donc je réponds comme réponse – Tewr
''(...) [.> =' '1753-01-01' 'et. <= '' 9999-12-31 ''] ',' datetime'' est une solution légèrement plus cohérente. – Tewr
@Tewr: Peut-être que vous aimez la deuxième version pour le faire mieux. – Tomalak