My guess is that, when using as_datetime, the unit of measure for the first argument is seconds, and not days:
45628 seconds is approx 760 minutes, which is 12.67 hours, hence why 12:40:28 is the time returned and the date remains equal to the origin