首页 > 解决方案 > 由于雇用/辞职日期而无法找出活跃用户

问题描述

在我Employee的 SQL Server 表中,我有两个日期时间列:HiringDateResignDate. 我想Status在视图中创建一个新列(活动、非活动)。

我是否必须制作某种嵌套案例才能完成这项工作,我还想知道我是否必须将其转换为日期格式,以便不包括时间部分。

将非常感谢您的帮助。

这是我到目前为止尝试过的,但它不能正常工作......

CASE 
            WHEN CONVERT(DATE,HiringDate) IS NOT NULL 
            OR CONVERT(DATE,HiringDate) <= CONVERT(DATE,GETDATE()) 
            THEN 
                CASE 
                    WHEN CONVERT(DATE,ISNULL(ResignDate, CONVERT(DATE,'2099-12-30'))) <= CONVERT(DATE,GETDATE()) 
                    THEN 'Active'
                    ELSE 'Inactive'
                END 
            ELSE 'Inactive' 
        END as Status

标签: sqlsql-serverdate

解决方案


试试下面这个在一个 CASE 表达式中组合逻辑:

CASE 
    WHEN HiringDate IS NOT NULL 
        or HiringDate >= GETDATE()
        or ResignDate >= GETDATE() 
    THEN 'Active' 
    ELSE 'Inactive' 
END as Status

您能否尝试以下新逻辑-

CASE 
    WHEN (
        CONVERT(DATE,HiringDate) IS NOT NULL 
        OR 
        CONVERT(DATE,HiringDate) <= CONVERT(DATE,GETDATE()
    )
    AND
    CONVERT(DATE,ISNULL(ResignDate, CONVERT(DATE,'2099-12-30'))) 
            <= CONVERT(DATE,GETDATE()) 
    THEN 'Active'

    ELSE 'Inactive' 
END as EmployeeStatus 

推荐阅读