Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 转换日期用户定义函数不工作_Sql Server 2008_Case_User Defined Functions_Date Conversion - Fatal编程技术网

Sql server 2008 转换日期用户定义函数不工作

Sql server 2008 转换日期用户定义函数不工作,sql-server-2008,case,user-defined-functions,date-conversion,Sql Server 2008,Case,User Defined Functions,Date Conversion,您好,我正在尝试在SQLServer2008中创建一个用户定义的函数,用于将日期从一种格式转换为另一种格式 我使用的日期缺少centuary,即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 =

您好,我正在尝试在SQLServer2008中创建一个用户定义的函数,用于将日期从一种格式转换为另一种格式

我使用的日期缺少centuary,即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

你想要这样的东西:

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

它说它缺少一个声明行,所以我添加了它,它成功了。非常感谢你,詹姆斯。我已经整理好了,这样它会帮助其他任何人找到答案。如果你能把我的回答作为你问题的答案,那就太棒了