I see the problem of how long you have been working has been solved by others. Now let's focus on what you are asking in the title to your question.
The reason you get different numbers, is because you are counting 2 different ways. If you truly want to know how long you have worked, you have to think in terms of completed units (years, months, days, etc) to however much detail you are interested in.
Once you start thinking of completed years, 2011 is no longer contributing to the counting. You have completed 1 year in May of 2012 (As @amWhy noted), 2 years in May of 2013, etc.
When thinking in completed years, the amount of years will be
a) the difference between the end and start year (provided you have passed your hire date in the end year)
b) the result from a) minus 1 (provided you have yet to pass your hire date in the end year)
When you count by intervals, you are getting the difference between 2014-2011.
When you count the years, you are counting the numbers in a sequence 2011, 2012, 2013, 2014.
The results from the 2 forms of counting will always be off by 1.
i.e 10-5 = 5 and the amount of numbers 5,6,7,8,9,10 -> 6 are off by 1