gpt4 book ai didi

xml - sql 中的暂定日期转换

转载 作者:行者123 更新时间:2023-12-03 16:13:39 24 4
gpt4 key购买 nike

我正在寻找 TSQL 中的 TRYCAST 之类的东西或等效的方法/黑客。

就我而言,我正在从 xml 列中提取一些日期数据。

以下查询抛出“将表达式转换为数据类型日期时间的算术溢出错误”。如果在 xml 中找到的那段数据无法转换为日期时间(在这种特定情况下,日期在某些情况下为“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

最佳答案

当节点小于 SQL Server 允许的最小日期时间时,您可以尝试排除该节点:

SELECT
[CustomerInfo].value('(//*:InceptionDate/text())[1][.>=''1753-01-01'']', 'datetime')
FROM
Customers

一种不太假设的方法是:
SELECT
CASE
WHEN ISDATE([CustomerInfo].value('(//*:InceptionDate/text())[1]'))
THEN CONVERT(DATETIME, [CustomerInfo].value('(//*:InceptionDate/text())[1]'))
ELSE NULL
END
FROM
Customers

关于xml - sql 中的暂定日期转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2453262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com