[SQL ] MSSQL2005-請問這個function的錯誤如何修正?
環境:使用MS SQL2005
需求:將user提供的日期資料轉換成int型態
日期資料包括兩種
一個是yyyymmdd格式,varchar型態
一個是datetime格式
如果資料非合法的日期則回傳0
以下是測試資料的Script
--------------------------------------------------
CREATE TABLE [dbo].[TB_TEST](
[DATE_DATETIME] [datetime] NULL,
[DATE_CHAR] [varchar](20) NULL
) ON [PRIMARY]
GO
INSERT INTO TB_TEST
SELECT GETDATE(),'2007/12/12'
GO
--------------------------------------------------
CREATE FUNCTION [dbo].[FX_Convert_Date]
(@COL VARCHAR(10)) --此次要處理的欄位
RETURNS INT
AS
BEGIN--FUNCTION BEGIN
DECLARE @RTN_VALUE INT
BEGIN
SELECT @RTN_VALUE = CASE WHEN ISDATE(RTRIM(LTRIM(@COL)))=0 THEN NULL
ELSE CAST(CONVERT(VARCHAR(8),@COL,112) AS INT)
END
GOTO RTN
END
RTN:
RETURN @RTN_VALUE
END--FUNCTION END
----------------------------------------------------------
測試方法:
SELECT dbo.FX_Convert_Date(DATE_DATETIME)
FROM TB_TEST
目前處理varchar的日期是OK的
但處理datetime型態的資料時會出錯
錯誤訊息:
訊息 245,層級 16,狀態 1,行 1
將 varchar 值 '12 9 20' 轉換成資料類型 int 時,轉換失敗。
我不使用func,直接把ELSE CAST xxxx 這段拿來處理datetime資料是OK的
SELECT CAST(CONVERT(VARCHAR(8),GETDATE(),112) AS INT)
因此不曉得問題是出在透過func的關係嗎?
想請板上的朋友們幫我debug一下
謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.64.83.10