0

こんにちは、日付をある形式から別の形式に変換するために、SQL Server 2008 でユーザー定義関数を作成しようとしています。

1610101 は 1961/01/01 で、213/02/15 は実際には 2013/02/15 です。

私はこれをいくつかのウェブサイトで解決策を探しましたが、何が問題なのかわかりません。

create function Convert_Date(@Cdate Date)
returns Date
as
Begin
declare @return date
select @return = case @Cdate
when (LEFT(@Cdate,1) = 1) then convert(date,('19'+ CONVERT(VARCHAR(30), right(@Cdate,6))))
when (LEFT(@Cdate,1) = 2) then convert(date,('20'+ CONVERT(VARCHAR(30), right(@Cdate,6))))
return @return
end
4

1 に答える 1

0

あなたはこのようなものが欲しいです:

CREATE FUNCTION Convert_Date(@Cdate DATE)
RETURNS DATE
AS
BEGIN

    DECLARE @return DATE

    SELECT @return = 
    (
        CASE LEFT(@Cdate,1) 
            WHEN '1' THEN CONVERT(DATE, ('19'+ CONVERT(VARCHAR(30), RIGHT(@Cdate,6)))) 
            WHEN '2' THEN CONVERT(DATE, ('20'+ CONVERT(VARCHAR(30), RIGHT(@Cdate,6))))
        END
    )

    RETURN @return
END

whenステートメントは、結果がケースと一致する時間である必要あります。

于 2013-02-15T11:44:18.313 に答える