2016-04-21 18 views
2

我查詢這裏:怎樣獲得MySQL變量放到Where子句

select *,@final := DATE_ADD(start_date, INTERVAL 2 YEAR) AS final_date from emp_employee as emp 
where employee_type_id=2 
and (end_date is null or end_date>now()); 


結果是:

enter image description here

但是,當我改變我的查詢到這一點:

select *,@final := DATE_ADD(start_date, INTERVAL 2 YEAR) AS final_date from emp_employee as emp 
where employee_type_id=2 
and YEAR(@final)=2016 
and (end_date is null or end_date>now()); 

它沒有給出任何結果,它是空的。我的查詢出了什麼問題以及如何解決?

回答

3

你可以改變你的查詢以下列方式

select *, DATE_ADD(emp.start_date, INTERVAL 2 YEAR) AS final_date from emp_employee as emp 
where emp.employee_type_id=2 
and YEAR(DATE_ADD(emp.start_date, INTERVAL 2 YEAR))=2016 
and (ISNULL(emp.end_date) or emp.end_date>now()); 

必須使用ISNULL功能檢查,如果一個特定的列有NULL值。

+1

非常感謝!它工作很大 –