gpt4 book ai didi

sql - 不可能在 UDF 中尝试/捕获?如何将 "TryCast"varchar 转换为日期时间?

转载 作者:行者123 更新时间:2023-12-04 22:26:10 26 4
gpt4 key购买 nike

我如何将 varchar 参数转换为日期时间,如果转换失败,则默认使用 GetDate()?我试图将它放在 Try/Catch 中,但显然这在 UDF 中不起作用。简单地检查日期时间是否为空也不起作用,因为它会抛出异常('将 char 数据类型转换为日期时间数据类型导致日期时间值超出范围'):

CREATE FUNCTION [dbo].[getRZUInfo]
(
@IMEI varchar(20),
@StrDeliveryDate varchar(20)
)
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @Info VARCHAR(8000)
DECLARE @DeliveryDate datetime;
SET @DeliveryDate = Convert(datetime,@StrDeliveryDate,102);
IF @DeliveryDate IS NULL
SET @DeliveryDate=GetDate();
SELECT @Info = COALESCE(@Info + '|', '') + 'TAT_B2B: ' + Convert(varchar,tabData.TAT_B2B) + ', AC' + Convert(varchar,tabData.fimaxActionCode) + ', Diff: ' + Convert(varchar,DateDiff(day,tabData.Received_date,@DeliveryDate))
FROM tabData
WHERE (SSN_Number = @IMEI) AND (Received_Date >= DATEADD(month, -3, @DeliveryDate))
ORDER BY SSN_Number,Received_Date DESC
return @Info
END

最佳答案

SET @DeliveryDate = CASE
WHEN Isdate(@StrDeliveryDate) = 1 THEN
CONVERT(DATETIME, @StrDeliveryDate, 102)
ELSE Getdate()
END

关于sql - 不可能在 UDF 中尝试/捕获?如何将 "TryCast"varchar 转换为日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5376801/

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