My friend asked me just today, "Hey, how are you?"
I said, "Tired, sleepy, and can't concentrate on my work."
He then asked, "Why so?"
Here is where the interesting part starts.
I said, "I have had a headache yesterday"
He said that I should have said "I had a headache yesterday" instead of "I have had a headache yesterday"
But all grammar books say that with Present Perfect + Past Tense we mean an action that continues into the present; has consequences in the present.
I didn't want to just tell the fact that I had a headache but I implied that that was the reason I was "Tired, sleepy, and can't concentrate on my work."
Who is right?
Best Answer
Yesterday refers to time in the past. If the headache has passed, you no longer have it:
If your headache began yesterday and you still have it:
Let's say you've acted grumpily towards someone and you want to apologize:
You still have the headache. It began in the past (perhaps this morning) and has persisted.
Merely a causal connection between a past event and the present is not sufficient grounds to use the present perfect. If there is a time phrase relegating the action to the past, you cannot use the present perfect in that clause. If the time phrase excludes the present, the present perfect cannot be used in that clause.
But contemplate this:
There is no time phrase relegating the robbery to the past, no time phrase which excludes the present; the speaker, by choosing the present perfect, is expressing a relationship of the past event to the present.
Here's how you might translate it on a semantic level:
He robbed a bank ~ he was a bank robber
He has robbed a bank ~ he is a bank robber