避免 sql 服务器 varchar 列中的默认日期(1900 年 1 月)

Avoid default date (Jan 1900) in sql server varchar column

我有经验 table 在我的 sql 服务器数据库中有以下列:

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

如果您处理的结束日期为空字符串,则 SQL 服务器会自动将其视为 1/1/1990。

您可以通过 运行 以下查询查看此内容:

SELECT CAST( '' AS DATE )

这个 returns 1900-01-01.

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

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

这将 return 您提供的格式的结束日期,或者 'currently working'。