It's entirely possible to get the same millisecond for a number of calls, so your plan won't work if they're too close together. I wrote a simple script that was able to get the same millisecond 15-20 times in a row. Also, the logged millisecond does not exactly align to the value returned from DateTime.now(), lagging by about about 0.5 milliseconds in some ...
You can do this using the functions DateAdd, DateDiff and a multiplication. The query could look like this:
DateAdd(day, DateDiff(day, movein, moveout)*0.7, movein) as [reminder_date]
For your example this results in the date 2020-01-22.
DateAdd function reference
DateDiff function reference
If the comparison is based on GMT why is it returning records in the second case above when set to EST timezone and not when set to GMT timezone?
All date literals return values based on the user's current time zone. This ensures that if a user asks for records from "today" or "last_n_days:10", they'll get results that they would expect to get if they were ...