1. He has three hours soccer practice every day.

2. He has three hours' soccer practice every day.

3. He has three-hour soccer practice every day.

(Which one is grammatical?)

Number two is correct.

1 would be correct if you add "of" after "hours."

2 is correct.

3 would be correct if you put "a" before "three."

Out of the three options you have provided, the most grammatically correct one is:

2. He has three hours' soccer practice every day.

Explanation:
In this sentence, the possessive form of the noun "hours" is correctly used with an apostrophe ('s) to indicate that the soccer practice belongs to the three hours. The apostrophe is placed after "hours", indicating possession.

Please note that options 1 and 3 are not as grammatically correct:

1. He has three hours soccer practice every day.
In this option, the possessive form of "hours" is missing the apostrophe ('s). This form is grammatically incorrect.

3. He has three-hour soccer practice every day.
In this option, the hyphen is used between "three" and "hour" to create a compound adjective for "soccer practice". While this option is understandable, it is not the most conventional or commonly used way to express the intended meaning. It is preferable to use the possessive form in option 2.