Extract entries from table where specific datetime criteria are satisfied SQL
That is what I suggested in comment:

declare @dt table (dt datetime);
insert into @dt values
('2018-01-11 09:00:00.000'),
('2018-01-11 09:00:00.000'),
('2018-01-11 09:45:00.000'),
('2018-01-11 09:45:00.000'),
('2018-01-11 10:00:00.000'),
('2018-01-11 10:00:00.000'),
('2018-01-11 10:15:00.000'),
('2018-01-11 10:15:00.000');

declare @tm table (tm time);

insert into @tm values
('00:00:00'),
('00:30:00'),
('01:00:00'),
('01:30:00'),
('02:00:00'),
('02:30:00'),
('03:00:00'),
('03:30:00'),
('04:00:00'),
('04:30:00'),
('05:00:00'),
('05:30:00'),
('06:00:00'),
('06:30:00'),
('07:00:00'),
('07:30:00'),
('08:00:00'),
('08:30:00'),
('09:00:00'),
('09:30:00'),
('10:00:00'),
('10:30:00'),
('11:00:00'),
('11:30:00'),
('12:00:00'),
('12:30:00');

select *
from @dt
where cast(dt as time) in (select tm from @tm);


Alternatively, use exists:

select *
from @dt t
where exists (select * 
              from @tm t1
              where t1.tm = cast(t.dt as time));