Desplazar y/o escalear el rango de valores de un número temporal con uno o dos números
shiftValue(tnumber,base) → tnumber
scaleValue(tnumber,width) → tnumber
shiftScaleValue(tnumber,base,base) → tnumber
Cuando se escalea, si el rango de valores del valor temporal es un valor único (por ejemplo, para un instante temporal), el resultado es el valor temporal. Además, el ancho data debe ser estrictamente superio que cero.
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]}
Extraer de un flotante temporal con interpolación lineal las subsecuencias donde los valores permanecen en un rango de un ancho dado durante al menos una duración dada
stops(tfloat,maxDist=0.0,minDuration='0 minutes') → tfloatSeqSet
Si maxDist
no se especifica, el valor 0.0 se asume por defecto y por lo tanto, la functión extrae los segmentos constantes del flotante temporal.
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