2017-06-03 49 views
0

我有一個經驗表有以下幾列我的SQL服務器數據庫:避免違約的日期(一月至1900年)

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我「M獲得輸出這樣

May 2015 - Jan 1900Currently Working 

通過這個查詢: -

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

我該如何避免這個默認日期或是否有其他方法來獲得所需的輸出?

May 2015 - Currently Working 

回答

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 

這會爲您提供的格式返回結束日期,或'正在工作'。

相關問題