To send a sequence of emails to a contact based on a specific date (leading up to the date and after the date), create a drip campaign using the 'Contact Changed' starting step.
Using Custom Fields
If you are using custom fields, there is only a 'date-time' type, thus you cannot use the 'equals' operator. Thus you will have to create a query that sets the bounds for the entrance date. You will need to use a query that looks for contacts that have the custom field set to less than 1 day before your target date and greater than one day after your target.
For example, if you are looking to send an email to a prospect 7 days before the 'move in' date, you would use the bounds of [less than 8 days and greater than 6 days from now]
This will bring in any contact that has the custom field date that is 7 days earlier than the custom field date.
Using Special Dates
if you are able to use a 'special' date, the queries are much simpler. You can set a 'named date' using the 'Set Date' workflow action:
You as well can create a named date using the 'date' portion of a custom field via a dynamic term:
on the set date workflow action:
Then the query becomes
Both objects support an 'anniversary' mode ('Next') option as well.