【问题标题】:Convert Date user-defined function not working转换日期用户定义的函数不起作用
【发布时间】:2013-02-15 11:29:35
【问题描述】:

您好,我正在尝试在 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

【问题讨论】:

    标签: sql-server-2008 case user-defined-functions date-conversion


    【解决方案1】:

    你想要这样的东西:

    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 匹配的时间 when

    【讨论】:

    • 它说它缺少声明行,所以我添加了它并且它有效。感谢一百万詹姆斯。
    • 我已经整理了它,所以它会帮助遇到答案的其他人。如果您可以将我的回复标记为您问题的答案,那就太好了
    猜你喜欢
    • 2023-03-24
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多