Tim*_*ter 2 sql t-sql sql-server-2005
如何将varchar参数转换为datetime,如果转换失败使用GetDate()默认值?我试图把它放在Try/Catch中,但显然这在UDF中不起作用.它也不能简单地检查datetime是否为null,因为它会抛出异常('将char数据类型转换为datetime数据类型导致超出范围的datetime值'):
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
Run Code Online (Sandbox Code Playgroud)
SET @DeliveryDate = CASE
WHEN Isdate(@StrDeliveryDate) = 1 THEN
CONVERT(DATETIME, @StrDeliveryDate, 102)
ELSE Getdate()
END
Run Code Online (Sandbox Code Playgroud)