如何將varchar參數轉換爲datetime,如果轉換失敗,則使用GetDate()
作爲默認值? 我試圖把它放在Try/Catch中,但顯然這在UDF中不起作用。它也無法簡單地檢查日期時間是否爲空,因爲它會引發異常('將char數據類型轉換爲導致日期時間值超出範圍的日期時間數據類型'):嘗試/抓住UDF不可能?如何「TryCast」日期時間varchar?
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
您是否期待任何特定的日期格式?或者它是開放的? 「2010年1月1日」,「12/13/2011」,「2010.02.02」等? – RichardTheKiwi 2011-03-21 11:15:25
udf主要用於excel插件,我可以假裝格式(02.12.2010)。 – 2011-03-21 11:24:00
你可以假裝,但錯誤的DATEFORMAT設置將拋出ISDATE,你可能有''getdate()'' – RichardTheKiwi 2011-03-21 11:46:07