Предполагая, что в MySQL вы хотите добиться такого результата, как этот ...
+------------+-------------+------------+------------+
| id_service | id_contract | date_start | date_stop |
+------------+-------------+------------+------------+
| 1 | 1 | NULL | NULL |
| 2 | 1 | 2019-02-01 | 2019-03-01 |
| 3 | 1 | 2017-02-01 | 2019-03-01 |
| 4 | 2 | 2018-11-01 | 2019-05-01 |
| 5 | 2 | 2017-03-05 | NULL |
| 6 | 2 | 2018-02-01 | 2018-12-31 |
| 7 | 3 | 2018-02-01 | 2018-12-31 |
| 8 | 3 | 2018-01-01 | 2018-12-31 |
| 9 | 3 | 2018-01-01 | 2017-03-01 |
+------------+-------------+------------+------------+
... тогда вы можете использовать это ...
select 1 id_service, 1 id_contract, str_to_date('01.01.2019', 'dd.mm.yyyy') date_start, null date_stop from dual union all
select 2, 1, str_to_date('01.02.2019', '%d.%m.%Y'), str_to_date('01.03.2019', '%d.%m.%Y') from dual union all
select 3, 1, str_to_date('01.02.2017', '%d.%m.%Y'), str_to_date('01.03.2019', '%d.%m.%Y') from dual union all
select 4, 2, str_to_date('01.11.2018', '%d.%m.%Y'), str_to_date('01.05.2019', '%d.%m.%Y') from dual union all
select 5, 2, str_to_date('05.03.2017', '%d.%m.%Y'), null from dual union all
select 6, 2, str_to_date('01.02.2018', '%d.%m.%Y'), str_to_date('31.12.2018', '%d.%m.%Y') from dual union all
select 7, 3, str_to_date('01.02.2018', '%d.%m.%Y'), str_to_date('31.12.2018', '%d.%m.%Y') from dual union all
select 8, 3, str_to_date('01.01.2018', '%d.%m.%Y'), str_to_date('31.12.2018', '%d.%m.%Y') from dual union all
select 9, 3, str_to_date('01.01.2018', '%d.%m.%Y'), str_to_date('01.03.2017', '%d.%m.%Y') from dual
Примечание что у MySQL есть понятие «дуал», но на самом деле в этом нет необходимости.