Wow...what an interesting naming convention :-) "2018_01" only going up to Jan 8th.
Anyway, I think you'll need to run split commands and then drop the subpartitions that no longer apply, eg
SQL> CREATE TABLE T ( D DATE )
2 PARTITION BY RANGE ( D )
3 SUBPARTITION BY RANGE ( D )
4 (
5 PARTITION "PART_2018_01" VALUES LESS THAN (TO_DATE(' 2018-01-08 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'))
6 (
7 SUBPARTITION "SUBPART_2018_01_07" VALUES LESS THAN (TO_DATE(' 2018-01-08 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'))
8 ),
9 PARTITION "PART_2018_02" VALUES LESS THAN (TO_DATE(' 2018-02-08 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'))
10 (
11 SUBPARTITION "SUBPART_2018_01_14" VALUES LESS THAN (TO_DATE(' 2018-01-14 23:59:59', 'SYYYY-MM-DD HH24:MI:SS')),
12 SUBPARTITION "SUBPART_2018_01_21" VALUES LESS THAN (TO_DATE(' 2018-01-21 23:59:59', 'SYYYY-MM-DD HH24:MI:SS')),
13 SUBPARTITION "SUBPART_2018_01_MX" VALUES LESS THAN (TO_DATE(' 2018-01-31 23:59:59', 'SYYYY-MM-DD HH24:MI:SS')),
14 SUBPARTITION "SUBPART_2018_02_07" VALUES LESS THAN (TO_DATE(' 2018-02-08 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'))
15 )
16 );
Table created.
SQL>
SQL> begin
2 for i in 0 .. 200 loop
3 begin
4 insert into t values ( date '2018-01-01'+i ) ;
5 commit;
6 exception
7 when others then null;
8 end;
9 end loop;
10 end;
11 /
PL/SQL procedure successfully completed.
SQL>
SQL> alter table t split partition "PART_2018_02" at (TO_DATE(' 2018-01-31 23:59:59', 'SYYYY-MM-DD HH24:MI:SS'))
2 into ( partition PART_2018_01S, partition PART_2018_02S );
Table altered.
SQL>
SQL> exec dbms_stats.gather_table_stats('','T', granularity=>'ALL');
PL/SQL procedure successfully completed.
SQL>
SQL> col high_value format a50
SQL> set lines 200
SQL> select partition_name, high_value, subpartition_count, num_rows
2 from user_tab_partitions
3 where table_name = 'T'
4 order by partition_position;
PARTITION_NAME HIGH_VALUE SUBPARTITION_COUNT NUM_ROWS
------------------------------ -------------------------------------------------- ------------------ ----------
PART_2018_01 TO_DATE(' 2018-01-08 00:00:00', 'SYYYY-MM-DD HH24: 1 7
MI:SS', 'NLS_CALENDAR=GREGORIA
PART_2018_01S TO_DATE(' 2018-01-31 23:59:59', 'SYYYY-MM-DD HH24: 4 24
MI:SS', 'NLS_CALENDAR=GREGORIA
PART_2018_02S TO_DATE(' 2018-02-08 00:00:00', 'SYYYY-MM-DD HH24: 4 7
MI:SS', 'NLS_CALENDAR=GREGORIA
3 rows selected.
SQL>
SQL> col high_value format a50
SQL> set lines 200
SQL> select partition_name, subpartition_name, high_value, num_rows
2 from user_tab_subpartitions
3 where table_name = 'T'
4 order by partition_name, subpartition_position;
PARTITION_NAME SUBPARTITION_NAME HIGH_VALUE NUM_ROWS
------------------------------ ------------------------------ -------------------------------------------------- ----------
PART_2018_01 SUBPART_2018_01_07 TO_DATE(' 2018-01-08 00:00:00', 'SYYYY-MM-DD HH24: 7
MI:SS', 'NLS_CALENDAR=GREGORIA
PART_2018_01S SYS_SUBP157 TO_DATE(' 2018-01-14 23:59:59', 'SYYYY-MM-DD HH24: 7
MI:SS', 'NLS_CALENDAR=GREGORIA
PART_2018_01S SYS_SUBP158 TO_DATE(' 2018-01-21 23:59:59', 'SYYYY-MM-DD HH24: 7
MI:SS', 'NLS_CALENDAR=GREGORIA
PART_2018_01S SYS_SUBP159 TO_DATE(' 2018-01-31 23:59:59', 'SYYYY-MM-DD HH24: 10
MI:SS', 'NLS_CALENDAR=GREGORIA
PART_2018_01S SYS_SUBP160 TO_DATE(' 2018-02-08 00:00:00', 'SYYYY-MM-DD HH24: 0
MI:SS', 'NLS_CALENDAR=GREGORIA
PART_2018_02S SYS_SUBP161 TO_DATE(' 2018-01-14 23:59:59', 'SYYYY-MM-DD HH24: 0
MI:SS', 'NLS_CALENDAR=GREGORIA
PART_2018_02S SYS_SUBP162 TO_DATE(' 2018-01-21 23:59:59', 'SYYYY-MM-DD HH24: 0
MI:SS', 'NLS_CALENDAR=GREGORIA
PART_2018_02S SYS_SUBP163 TO_DATE(' 2018-01-31 23:59:59', 'SYYYY-MM-DD HH24: 0
MI:SS', 'NLS_CALENDAR=GREGORIA
PART_2018_02S SYS_SUBP164 TO_DATE(' 2018-02-08 00:00:00', 'SYYYY-MM-DD HH24: 7
MI:SS', 'NLS_CALENDAR=GREGORIA
9 rows selected.
SQL>
SQL>
SQL>
SQL>