2015-11-16 50 views
0

我已經有了這個代碼,將從VARCHAR列返回名稱和租用的一年:MySQL的轉換爲varchar最新

select name 
    , substring_index 
     (substring_index 
      (hire_date, '/', 3), '/', -1) as YEAR_OF_HIRE 
    from salesreps; 

我的問題是如何才能讓varchar列特定列。例如在聘用日期(VARCHAR)列租用的一年有數據:

- 20/12/1986 
- 10/12/1986 
- 12/02/1988 
- 13/01/1990 
- 25/10/1987 

我需要的僅僅是到1988年之前返回數據,因此這意味着它只會返回:

- 20/12/1986 
- 10/12/1986 
- 25/10/1987 

什麼我需要的是不更改列和更新表中的數據。

+0

這是一所學校分配。所以它就是這樣設計的。不是我的錯誤,如果它是這樣設計的。 –

+0

這可能不是你的錯誤,但是修復別人的錯誤還是要好得多,以便更好地傳播它 –

+0

@mark - 好的。我只會改變和更新。感謝您的建議。 –

回答

0
$years = explode($row['hire_date'], "/"); 

IF ($years[2] <= 1998){ 
    //do stuff 
} 
1

試試這個:

select name, YEAR(str_to_date(hire_date, '%d/%m/%Y')) as YEAR_OF_HIRE from salesreps 
Where YEAR(str_to_date(hire_date, '%d/%m/%Y')) < 1988 
+0

非常感謝你!我實際上編輯了你的代碼,並得到了答案,然後當我看到你編輯了,我嘗試了,我得到了一個更好的答案。非常感謝你!! :D –

+0

我實際上在編輯你的答案之前使用了這個: select name,(case YEAR(str_to_date(hire_date,'%d /%m /%Y')) <1988 then hire_date else NULL end)as YEAR_OF_HIRE來自salesreps; –

+0

我認爲這是對我的解決方案的最後編輯;) 我自己嘗試,並按需要工作 – wajeeh