找几个月前的平均工资 - MySQL

时间:2013-02-01 20:07:07

标签: mysql date average

我想找到8个月前开始工作的员工的平均工资。

我尝试制作代码,但不知怎的,它显示的是NULL ..

SELECT AVG(salary) FROM Staff  
WHERE salary = DATE_SUB(sWDate, INTERVAL 8 MONTH);

一切都在这张桌子里。

有人可以帮帮我吗?我不确定我做错了什么。感谢。

2 个答案:

答案 0 :(得分:1)

为什么salary = DATE_SUB(sWDate, INTERVAL 8 MONTH)

在8个月内:

SELECT AVG(salary) FROM Staff  
WHERE sWDate <= NOW() AND sWDate >= DATE_SUB(Now(), INTERVAL 8 MONTH);

另:

SELECT AVG(salary) FROM Staff  
WHERE sWDate <= NOW() AND sWDate >= DATE_ADD(Now(), INTERVAL -8 MONTH);

PS:最好根据Now()中的日期格式设置sWDate格式,以获得精确的结果。否则,您可以使用Year/Month

e.g:

SELECT AVG(salary) FROM Staff  
WHERE Date_Format(sWDate,'%Y-%m') <= Date_Format(NOW(),'%Y-%m') 
AND Date_Format(sWDate,'%Y-%m') >= Date_Format(DATE_ADD(Now(), INTERVAL -8 MONTH), '%Y-%m';

答案 1 :(得分:0)

我认为你应该检查Date字段而不是日期的薪资

SELECT AVG(salary) FROM Staff  
WHERE [DateField] = DATE_SUB(NOW(), INTERVAL 8 MONTH);