How can I select records which are between 2 dates based on a date in a field in PostgresSQL?
If I understand your problem correctly, you have to join the other table to historical_adresses based on the unique ID and that the visit time falls between startdate and enddate.  

If this is so, the query could look like:

SELECT [address_elements]
FROM historical_adresses AS ha
JOIN visits AS v 
    ON ha.user_id = v.user_id
    AND v.visit_time BETWEEN ha.startdate AND ha.enddate
WHERE [find the visit somehow that you are interested in];


Note: you usually don't need all columns of a table (and definitely not from a join), so use the actual column names rather than *.