This might be a little bit unconventional, but if timewrap isn't an option, and if the time periods are consecutive and the searches are the same for both then you could do one search like so. (assuming search-terms are your base search terms and analysis is analysis you do with other functions once you have the results...:
search-terms [noop | stats count | addinfo | eval userearliest=if(info_min_time==0,relative_time(now(),"-30d@d"),info_min_time) | eval latest=if(info_max_time="+Infinity",info_search_time,info_max_time) | eval earliest=userearliest-(latest-userearliest) | fields earliest latest | format "" "" "" "" "" ""] | addinfo | eval side=if(_time<info_max_time-(info_max_time-info_min_time)/2,"earlier","later") | analysis
Now this will break if the user selects too large of a time range, and might break on some other edge cases, but what's happening is we have a dummy subsearch to capture the selected timeframe for the overall search using addinfo and with some evals calculate earliest and latest for a search window that's 2x longer (and assuming they "selected" -30d@d to now if they entered all time). Using format, we insert the earliest and latest terms into our main search, where we again use addinfo and an eval to determine if we're on the later selected side or the earlier calculated side.
Now if timeranges aren't consecutive, or searches are different, then it might look something like this (I didn't run this one through a splunk instance... might be a bit more off than above):
search-terms | eval side="later" | append [search search-terms [noop | stats count | addinfo | calculate-earliest-and-latest | fields earliest latest | format "" "" "" "" "" ""] | eval side="earlier"] | possibly-sort-then-analysis
... View more