Desplazar con un valor o rango de tiempo
shift(numbers,base) → numbers
shift(dates,integer) → dates
shift(times,interval) → times
SELECT shift(dateset '{2001-01-01, 2001-01-03, 2001-01-05}', 1); -- {2001-01-02, 2001-01-04, 2001-01-06} SELECT shift(intspan '[1, 4)', -1); -- [0, 3) SELECT shift(tstzspan '[2001-01-01, 2001-01-03]', interval '1 day'); -- [2001-01-02, 2001-01-04] SELECT shift(floatspanset '{[1, 2], [3, 4]}', -1); -- {[0, 1], [2, 3]} SELECT shift(tstzspanset '{[2001-01-01, 2001-01-03], [2001-01-04, 2001-01-05]}', interval '1 day'); -- {[2001-01-02, 2001-01-04], [2001-01-05, 2001-01-06]}
Escalear con un valor o un rango de tiempo
scale(numbers,base) → numbers
scale(dates,integer) → dates
scale(times,interval) → times
Si el ancho o el lapso de tiempo del valor de entrada es cero (por ejemplo, para un conjunto de marcas de tiempo único), el resultado es el valor de entrada. El valor o rango de tiempo dado debe ser estrictamente mayor que cero.
SELECT scale(tstzset '{2001-01-01}', interval '1 day'); -- {2001-01-01} SELECT scale(tstzset '{2001-01-01, 2001-01-03, 2001-01-05}', '2 days'); -- {2001-01-01, 2001-01-02, 2001-01-03} SELECT scale(intspan '[1, 4)', 4); -- [1, 6) SELECT scale(datespan '[2001-01-01, 2001-01-04)', 4); -- [2001-01-01, 2001-01-06) SELECT scale(tstzspan '[2001-01-01, 2001-01-03]', '1 day'); -- [2001-01-01, 2001-01-02] SELECT scale(floatspanset '{[1, 2], [3, 4]}', 6); -- {[1, 3], [5, 7]} SELECT scale(tstzspanset '{[2001-01-01, 2001-01-03], [2001-01-04, 2001-01-05]}', '1 day'); -- {[2001-01-01 00:00:00, 2001-01-01 12:00:00], [2001-01-01 18:00:00, 2001-01-02 00:00:00]} SELECT scale(tstzset '{2001-01-01}', '-1 day'); -- ERROR: The duration must be a positive interval: -1 days
Desplazar y escalear con los valores o rangos de tiempo
shiftScale(numbers,base,base) → numbers
shiftScale(dates,integer,integer) → dates
shiftScale(times,interval,interval) → times
Estas funciones combinan las funciones shift
y scale
.
SELECT shiftScale(tstzset '{2001-01-01}', '1 day', '1 day'); -- {2001-01-02} SELECT shiftScale(tstzset '{2001-01-01, 2001-01-03, 2001-01-05}', '1 day','2 days'); -- {2001-01-02, 2001-01-03, 2001-01-04} SELECT shiftScale(intspan '[1, 4)', -1, 4); -- [0, 5) SELECT shiftScale(datespan '[2001-01-01, 2001-01-04)', -1, 4); -- [2001-12-31, 2001-01-05) SELECT shiftScale(tstzspan '[2001-01-01, 2001-01-03]', '1 day', '1 day'); -- [2001-01-02, 2001-01-03] SELECT shiftScale(floatspanset '{[1, 2], [3, 4]}', -1, 6); -- {[0, 2], [4, 6]} SELECT shiftScale(tstzspanset '{[2001-01-01, 2001-01-03], [2001-01-04, 2001-01-05]}', '1 day', '1 day'); /* {[2001-01-02 00:00:00, 2001-01-02 12:00:00], [2001-01-02 18:00:00, 2001-01-03 00:00:00]} */
Redondear al entero inferior o superior
floor({floatset,floatspans}) → {floatset,floatspans}
ceil({floatset,floatspans}) → {floatset,floatspans}
SELECT floor(floatset '{1.5,2.5}'); -- {1, 2} SELECT ceil(floatspan '[1.5,2.5)'); -- [2, 3) SELECT floor(floatspan '(1.5, 1.6)'); -- [1, 1] SELECT ceil(floatspanset '{[1.5, 2.5],[3.5,4.5]}'); -- {[2, 3], [4, 5]}
Redondear a un número de decimales
round({floatset,floatspans},integer=0) → {floatset,floatspans}
SELECT round(floatset '{1.123456789,2.123456789}', 3); -- {1.123, 2.123} SELECT round(floatspan '[1.123456789,2.123456789)', 3); -- [1.123,2.123) SELECT round(floatspan '[1.123456789, inf)', 3); -- [1.123,Infinity) SELECT round(floatspanset '{[1.123456789, 2.123456789],[3.123456789,4.123456789]}', 3); -- {[1.123, 2.123], [3.123, 4.123]}
Convertir a grados o radianes
degrees(floatset, normalize=false) → floatset
radians(floatset) → floatset
El parámetro adicional en la función degrees
puede ser utilizado para normalizar los valores entre 0 y 360 grados.
SELECT round(degrees(floatset '{0, 0.5, 0.7, 1.0}', true), 3); -- {0, 28.648, 40.107, 57.296} SELECT round(radians(floatset '{0, 45, 90}'), 3); -- {0, 0.785, 1.571}
Transformar en minúsculas, majúsculas o initcap
lower(textset) → textset
upper(textset) → textset
initcap(textset) → textset
SELECT lower(textset '{"AAA", "BBB", "CCC"}'); -- {"aaa", "bbb", "ccc"} SELECT upper(textset '{"aaa", "bbb", "ccc"}'); -- {"AAA", "BBB", "CCC"} SELECT initcap(textset '{"aaa", "bbb", "ccc"}'); -- {"Aaa", "Bbb", "Ccc"}
Concatenación de texto
{text,textset} || {text,textset} → textset
SELECT textset '{aaa, bbb}' || text 'XX'; -- {"aaaXX", "bbbXX"} SELECT text 'XX' || textset '{aaa, bbb}'; -- {"XXaaa", "XXbbb"}
Establecer la precisión temporal del valor de tiempo al rango con respecto al origen
tprecision(times,interval,origin timestamptz=’2000-01-03’) → times
Si el origen no se especifica, su valor se establece por defecto en lunes 3 de enero de 2000.
SELECT tprecision(timestamptz '2001-12-03', '30 days'); -- 2001-11-23 SELECT tprecision(timestamptz '2001-12-03', '30 days', '2001-12-01'); -- 2001-12-01 SELECT tprecision(tstzset '{2001-01-01 08:00, 2001-01-01 08:10, 2001-01-01 09:00, 2001-01-01 09:10}', '1 hour'); -- {"2001-01-01 08:00:00+01", "2001-01-01 09:00:00+01"} SELECT tprecision(tstzspan '[2001-12-01 08:00, 2001-12-01 09:00]', '1 day'); -- [2001-12-01, 2001-12-02) SELECT tprecision(tstzspan '[2001-12-01 08:00, 2001-12-15 09:00]', '1 day'); -- [2001-12-01, 2001-12-16) SELECT tprecision(tstzspanset '{[2001-12-01 08:00, 2001-12-01 09:00], [2001-12-01 10:00, 2001-12-01 11:00]}', '1 day'); -- {[2001-12-01, 2001-12-02)} SELECT tprecision(tstzspanset '{[2001-12-01 08:00, 2001-12-01 09:00], [2001-12-01 10:00, 2001-12-01 11:00]}', '1 day'); -- {[2001-12-01, 2001-12-02)}