To clarify, the SArray operations are not always loaded in memory. They get flushed to disk when required. There should be no requirement even when operating with SArray.
For a moving window calculation, you have 2 options
(a) Using a combination of Group-by and Join operators, you should be able to achieve what you need to.
The functions that you might be interested are:
(i) gl.SArray.split_datetime: Split a datetime into hour, month, day etc.
(ii) gl.SFrame.groupby: This lets you do min, max, averages at an hour/day/month level.
(iii) gl.SFrame.join: Join the results from the group-by operation to your original table to get what you need.
In addition to that, the SFrame provides some useful operations (pack_columns, unpack) which let you move from dictionary/list i.e. composite types to simple types. Using those tools, I am sure you will be able to solve your problem.
(b) The Graphlab Create SDK is coming out very soon. It gives complete access to all the underlying data-structures and that should help you write anything that you need to, if you aren't satisfied with a solution that uses (a).