According to witnesses, a 42-year-old man suddenly set upon the victim with a knife, stabbing him in the neck, St Gallen police said in a statement on Saturday morning.
Passers-by managed to knock the knife from the attacker's hands and restrain him until the police arrived.
The accused was arrested and later interviewed by police who found him to be “confused”. Medical examinations will form part of the investigation, said police.
The accused was not known to the police for violent offences.
It is unclear whether the two men, both Swiss citizens, knew each other. No motive has yet been established.
The victim was operated on in hospital on Friday evening but remains in a critical condition.