Ваш вопрос немного сбивает меня с толку, поэтому я предоставил два сценария на основе кода.
1) Если вы хотите отфильтровать даты, которые находятся в диапазоне предоставленного вами списка, например, с 5 января 2017 г.до 15 января 2017 года, поэтому для этого случая ниже приведен фрагмент кода.
//Created dataframe view for both data
Seq(("2017-01-10", "2017-01-14"),("2017-01-03","2017-01-13")).toDF("from_date","to_date").withColumn("from_date",'from_date.cast("date")).withColumn("to_date",'to_date.cast("date")).createOrReplaceTempView("date_table")
List("2017-01-05","2017-01-12","2017-01-13","2017-01-15").toDF("list").createOrReplaceTempView("date_list")
spark.sql("select * from date_table where (from_date BETWEEN (select min(cast(list as date)) from date_list) and (select max(cast(list as date)) from date_list)) and (to_date between (select min(cast(list as date)) from date_list) and (select max(cast(list as date)) from date_list))").show()
+----------+----------+
|from_date| to_date|
+----------+----------+
|2017-01-10|2017-01-14|
+----------+----------+
2) Или если вы хотите отфильтровать дату из фрейма данных, где to_date и end_date отсутствуют в списке предоставленных дат.Таким образом, согласно приведенному вами примеру данных, между списком не будет даты.Для такого случая ниже код будет работать.
//Created dataframe view for both data
Seq(("2017-01-10", "2017-01-14"),("2017-01-03","2017-01-13")).toDF("from_date","to_date").withColumn("from_date",'from_date.cast("date")).withColumn("to_date",'to_date.cast("date")).createOrReplaceTempView("date_table")
List("2017-01-05","2017-01-12","2017-01-13","2017-01-15").toDF("list").createOrReplaceTempView("date_list")
spark.sql("select * from date_table where from_date in (select cast(list as date) from date_list) and to_date in (select cast(list as date) from date_list)").show()
+----------+----------+
|from_date| to_date|
+----------+----------+
| | |
+----------+----------+
Пожалуйста, дайте мне знать, если я что-то пропустил.