Excuse my lack of knowledge but you first created a new int called watered. Then inserted the watered boolean as false.
Why is it necessary?
Code:
int waterHour = 5;
int waternMin = 0;
int waterSec = 0;
bool watered = false;
void loop()
{
if(hour() == waterHour && minute() == waterMinute && second() == WaterSecond && !watered)
{
Water();
watered = true;
}
else
watered = false;
}