我的sql sever数据库中有一个经验表,其中包含以下列:
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
答案 0 :(得分: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
这将以您提供的格式返回结束日期,或“当前正在工作”。