Использовать левое соединение с условием соединения на основе дат:
select u.user_id, u.user_name, l.location as current_location
from users u
left join location l
on l.user_id = u.user_id
and current_date between l.start_date and l.end_date;
Возвращает местоположение как null
, если совпадений нет. Для отображения альтернативного значения используйте coalesce(l.location, 'undefined')
BETWEEN
будет включать начальную и конечную дату в качестве действительной «даты местоположения».
Если дата окончания не должна быть включена, вам нужно использовать другое условие соединения:
select u.user_id, u.user_name, l.location as current_location
from users u
left join location l
on l.user_id = u.user_id
and l.start_date >= current_date
and l.end_date < current_date;
Вы не указали свою СУБД, но выше приведен стандарт ANSI SQL.
Онлайн пример: http://rextester.com/MMHVB20021