比较SQL中case语句中的年份

时间:2014-03-25 21:26:43

标签: sql sql-server

我想从一个字段中提取年份并提供一个过滤器,但是,我已经尝试了一些根据年份过滤的东西而且它不起作用...它仍然显示完整的日期而不是空字符串。 这是我最近的尝试:

,(CASE
    WHEN YEAR(SomeDateField) = 1900
        THEN ''
    ELSE
        SomeDateField
    END
)As 'Confirmed Date'

2 个答案:

答案 0 :(得分:4)

将您的案例更改为

,(CASE
    WHEN YEAR(SomeDateField) = 1900
        THEN NULL
    ELSE
        SomeDateField
    END
)As 'Confirmed Date'

由于您在ELSE部分中使用Date值,因此SQL会查看整个字段,并认为其为Date列和''值在Date列中默认为1900-01-01,但它将 NULL 视为NULL

答案 1 :(得分:0)

确保您的案例陈述类似

    ,(CASE
        WHEN YEAR(SomeDateField) = 1900
            THEN NULL
        ELSE
            YEAR(SomeDateField)
        END
    )As ConfirmedDate