To get last 30 minutes, it is just
earliest=-30m latest=now
Looking at your examples you are actually describing snapping to the last multiple of 30 minutes. The below search should give you what you want
| makeresults | eval latest=_time, minutes=strftime(_time, "%M"), earliest=relative_time(_time, "@h".case(minutes==0, "-30m", minutes<=30, "", 1=1, "+30m"))
| eval latest=strftime(latest, "%Y-%m-%d %H:%M:%S"), earliest=strftime(earliest, "%Y-%m-%d %H:%M:%S")
Example usage
Your search [| makeresults | eval latest=_time, minutes=strftime(_time, "%M"), earliest=relative_time(_time, "@h".case(minutes==0, "-30m", minutes<=30, "", 1=1, "+30m")) | table latest, earliest]
Note this is a very weird use case.
... View more