Shift and/or the value span of a temporal number by one or two numbers
shiftValue(tnumber,base) → tnumber
scaleValue(tnumber,width) → tnumber
shiftScaleValue(tnumber,base,base) → tnumber
For scaling, if the value span of the temporal value is a single value (for example, for a temporal instant), the result is the temporal value. Furthermore, the given width must be strictly greater than zero.
SELECT shiftValue(tint '{1@2001-01-01, 2@2001-01-03, 1@2001-01-05}', 1); -- {2@2001-01-02, 3@2001-01-04, 2@2001-01-06} SELECT shiftValue(tfloat '{[1@2001-01-01,2@2001-01-02],[3@2001-01-03,4@2001-01-04]}', -1); -- {[0@2001-01-01, 1@2001-01-02], [2@2001-01-03, 3@2001-01-04]} SELECT scaleValue(tint '1@2001-01-01', 1); -- 1@2001-01-01 SELECT scaleValue(tfloat '{[1@2001-01-01,2@2001-01-02], [3@2001-01-03,4@2001-01-04]}', 6); -- {[1@2001-01-01, 3@2001-01-03], [5@2001-01-05, 7@2001-01-07]} SELECT scaleValue(tint '1@2001-01-01', -1); -- ERROR: The value must be strictly positive: -1 SELECT shiftScaleValue(tint '1@2001-01-01', 1, 1); -- 2@2001-01-01 SELECT shiftScaleValue(tfloat '{[1@2001-01-01,2@2001-01-02],[3@2001-01-03,4@2001-01-04]}', -1, 6); -- {[0@2001-01-01, 2@2001-01-02], [4@2001-01-03, 6@2001-01-04]}
Extract from a temporal float with linear interpolation the subsequences where the values stay within a span of a given width for at least a given duration
stops(tfloat,maxDist=0.0,minDuration='0 minutes') → tfloat
If maxDist
is not given, a value 0.0 is assumed by default and thus, the function extracts the constant segments of the temporal float.
SELECT stops(tfloat '[1@2001-01-01, 1@2001-01-02, 2@2001-01-03]'); -- {[1@2001-01-01, 1@2001-01-02)} SELECT stops(tfloat '[1@2001-01-01, 1@2001-01-02, 2@2001-01-03]', 0.0, '2 days'); -- NULL