0

我的 sql server 数据库中有一个经验表,其中包含以下列:

exp_id int,
u_id int ,
exp_jobtitle varchar(100),
exp_company varchar(100),
exp_startdate date,
exp_enddate varchar(50),
exp_working varchar(50),
exp_description varchar(2000),

如果我目前正在从事该特定工作,则不会在 exp_enddate 列中插入任何内容,但目前正在 exp_working 列中工作。

在前端,我展示了这样的结果:

如果我的工作于 2015 年 5 月至 2015 年 6 月结束,并且在我目前工作时出现问题

我想要这个输出May 2015 - Currently Working我得到这样的输出

May 2015 - Jan 1900Currently Working

通过此查询:-

select right(convert(varchar(50), cast('exp_enddate' as date), 106), 8)

我怎样才能避免这个默认日期或者有没有其他方法可以获得所需的输出?

May 2015 - Currently Working
4

1 回答 1

0

如果您正在处理结束日期的空字符串,那么 SQL Server 将自动将其视为 1/1/1990。

您可以通过运行以下查询来查看这一点:

SELECT CAST( '' AS DATE )

这返回1900-01-01

您可以做的是检查结束日期是否为空,如果是,则将其视为当前工作,如下所示:

SELECT 
    CASE 
        WHEN exp_enddate = '' 
        THEN 'Currently Working' 
        ELSE RIGHT( CONVERT( VARCHAR(50), CAST( exp_enddate AS DATE ), 106 ), 8 )
    END

这将以您提供的格式返回结束日期,或“当前工作”。

于 2017-06-03T21:19:41.703 回答