I usually prefer using this
CAST(CAST(DTTM AS VARCHAR(19)) AS TIMESTAMP(0)). i am not quite sure about time it take or how CPU intensive is the this process
Could you please explain the need of function of the string "- TIME '00:00:00' HOUR TO SECOND" in the #2 conversion.
If the field is in timestamp (6) it is because it is a valid value.
SELECT CAST(CAST(FIELDTOCHANGE AS VARCHAR(19)) AS TIMESTAMP(0))
It does not generate error, because the field in timestamp (6) already would have failed.
The subtraction converts the data type from "TIME" to "INTERVAL HOUR TO SECOND". (You can't add TIMESTAMP + TIME, but you can add TIMESTAMP + INTERVAL.)