[SQL ] MSSQL2005-請問這個function的錯誤如何修正?

看板Database作者 (CRUD)時間18年前 (2007/12/09 11:23), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
環境:使用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
文章代碼(AID): #17Mr_9hP (Database)