If by chance you do need to work with dates before 1753, you can use DateDiff_Big to count the seconds from a fixed point in time, and divide by the number of seconds in a day.
DateDiff_Big is only available since SQL Server 2016. If you have an earlier version, you can do something similar with DateDiff, but it's slightly more complicated.
declare @x datetime2(0)
set @x = '2018-09-20T22:44:07'
select @x,
cast ( cast ( @x as datetime ) as float ),
datediff_big(second,'0001-01-01T00:00:00.000', @x ) / cast(86400 as float) - 693595,
( datediff ( day, '0001-01-01T00:00:00.000', @x ) + datediff ( second, '00:00:00.000', cast(@x as time) ) / cast(86400 as float) ) - 693595
set @x = '1804-09-20T08:35:00'
select @x,
cast ( cast ( @x as datetime ) as float ),
datediff_big(second,'0001-01-01T00:00:00.000', @x ) / cast(86400 as float) - 693595,
( datediff ( day, '0001-01-01T00:00:00.000', @x ) + datediff ( second, '00:00:00.000', cast(@x as time) ) / cast(86400 as float) ) - 693595
set @x = '1066-09-20T08:35:00'
select @x,
-- cast ( cast ( @x as datetime ) as float ), -- won't work, before 1753.
datediff_big(second,'0001-01-01T00:00:00.000', @x ) / cast(86400 as float) - 693595,
( datediff ( day, '0001-01-01T00:00:00.000', @x ) + datediff ( second, '00:00:00.000', cast(@x as time) ) / cast(86400 as float) ) - 693595