Dear Erie,
For that particular operation you could use higher level SPM functions. To select a time window and drop the rest you could use the 'Crop' tool (spm_eeg_crop). And to select only a subset of trials you could mark the other trials as bad and then use 'Remove bad trials' tool (spm_eeg_remove_bad_trials) to remove them.
The lower-level way is to use the clone method which can create an empty dataset while preserving some header information. So you could do:
D_new = clone(D, 'newname', [D.nchannels, nsamples_new, ntrials_new], 2);
Then you would need to copy the data from D to D_new with something like
D_new(:, :, :)=D(:,3000:7200,2:75);
and then you might need to adjust things like trial labels or bad flags because clone can't figure those things out automatically. So
D_new = conditions(Dnew, ':', D.conditions(2:75));
D_new = badtrials(Dnew, ':', D.badtrials(2:75));
save(D_new);
Best,
Vladimir