The OVERLAY function syntax doesn't look like that at all:
OVERLAY SQL Function[
^] so taht is probably what SQL is complaining about.
But ... why are you storing date and time values in strings at all? That's a beginners mistake - convert from "military time" (whatever that may be) to a UTC DATETIME value in your presentation language when it is entered, and store that in your DB. Then, when you need it it's in a consistent format that can be converted to "military time" or "regular time" as needed and compared, sorted, processes, added, whatever you need.
Storing any value that isn't a string in VARCHAR or NVARCHAR columns is always a mistake which will make your life a whole load harder, even if it does make the initial INSERT code much, much easier at start with.