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语句应该是您的结果与case匹配的时间。

于 2013-02-15T11:44:18.313 回答