A continuación, damos las funciones de constructor para los distintos subtipos. El uso de la función de constructor suele ser más conveniente que escribir una constante literal.
Constructores para tipos temporales que tienen un valor constante
Estos constructores tienen dos argumentos, un tipo base y un tipo de tiempo, donde el último es un valor de timestamptz
, tstzset
, tstzspan
o tstzspanset
para construir, respectivamente, un valor de subtipo instante, una secuencia con interpolación discreta, una secuencia con interpolación linear o escalonada o un conjunto de secuencias. Las funciones para valores de secuencia o de conjunto de secuencias con tipo de base continuo tienen además un tercer argumento opcional que indica si el valor temporal resultante tiene interpolación lineal o escalonada. Se asume por defecto una interpolación lineal si el argumento no se especifica.
ttype(base,timestamptz) → ttypeInst
ttype(base,tstzset) → ttypeDiscSeq
ttype(base,tstzspan,interp='linear') → ttypeContSeq
ttype(base,tstzspanset,interp='linear') → ttypeSeqSet
SELECT tbool(true, timestamptz '2001-01-01'); SELECT tint(1, timestamptz '2001-01-01'); SELECT tfloat(1.5, tstzset '{2001-01-01, 2001-01-02}'); SELECT ttext('AAA', tstzset '{2001-01-01, 2001-01-02}'); SELECT tfloat(1.5, tstzspan '[2001-01-01, 2001-01-02]'); SELECT tfloat(1.5, tstzspan '[2001-01-01, 2001-01-02]', 'step'); SELECT tgeompoint('Point(0 0)', tstzspan '[2001-01-01, 2001-01-02]'); SELECT tgeogpoint('SRID=7844;Point(0 0)', tstzspanset '{[2001-01-01, 2001-01-02], [2001-01-03, 2001-01-04]}', 'step');
Constructores para tipos temporales de subtipo secuencia
Estos constructores tienen un primer argumento obligatorio, que es una matriz de valores de los valores instantáneos correspondientes y argumentos opcionales adicionales. El segundo argumento establece la interpolación. Si no se proporciona el argumento, es por defecto escalonada para los tipos de base base discretos como los enteros y es lineal para tipos de base continuous como los flotantes. Se genera un error cuando se establece la interpolación lineal para valores temporales con tipos de base discretos. Para secuencias continuas, el tercero y el cuarto argumentos son valores booleanos que indican, respectivamente, si los límites izquierdo y derecho son inclusivos o exclusivos. Se supone que estos argumentos son verdaderos de forma predeterminada si no se especifican.
ttypeSeq(ttypeInst[],interp={'step','linear'},leftInc bool=true,
rightInc bool=true) → ttypeSeq
SELECT tboolSeq(ARRAY[tbool 'true@2001-01-01 08:00:00','false@2001-01-01 08:05:00'], 'discrete'); SELECT tintSeq(ARRAY[tint '1@2001-01-01 08:00:00', '2@2001-01-01 08:05:00']); SELECT tintSeq(ARRAY[tint '1@2001-01-01 08:00:00', '2@2001-01-01 08:05:00'], 'linear'); -- ERROR: The temporal type cannot have linear interpolation SELECT tfloatSeq(ARRAY[tfloat '1.0@2001-01-01 08:00:00', '2.0@2001-01-01 08:05:00'], 'step', false, true); SELECT ttextSeq(ARRAY[ttext 'AAA@2001-01-01 08:00:00', 'BBB@2001-01-01 08:05:00']); SELECT tgeompointSeq(ARRAY[tgeompoint 'Point(0 0)@2001-01-01 08:00:00', 'Point(0 1)@2001-01-01 08:05:00', 'Point(1 1)@2001-01-01 08:10:00'], 'discrete'); SELECT tgeogpointSeq(ARRAY[tgeogpoint 'Point(1 1)@2001-01-01 08:00:00', 'Point(2 2)@2001-01-01 08:05:00']);
Constructores para tipos temporales de subtipo conjunto de secuencias
ttypeSeqSet(ttypeContSeq[]) → ttypeSeqSet
ttypeSeqSetGaps(ttypeInst[],maxt=NULL,maxdist=NULL,interp='linear') → ttypeSeqSet
Un primer conjunto de constructores tiene un solo argumento, que es una matriz de valores de los valores de secuencia correspondientes. La interpolación del valor temporal resultante depende de la interpolación de las secuencias que lo componen. Se genera un error si las secuencias que componen la matriz tienen una interpolación diferente.
SELECT tboolSeqSet(ARRAY[tbool '[false@2001-01-01 08:00:00, false@2001-01-01 08:05:00)', '[true@2001-01-01 08:05:00]','(false@2001-01-01 08:05:00, false@2001-01-01 08:10:00)']); SELECT tintSeqSet(ARRAY[tint '[1@2001-01-01 08:00:00, 2@2001-01-01 08:05:00, 2@2001-01-01 08:10:00, 2@2001-01-01 08:15:00)']); SELECT tfloatSeqSet(ARRAY[tfloat '[1.0@2001-01-01 08:00:00, 2.0@2001-01-01 08:05:00, 2.0@2001-01-01 08:10:00]', '[2.0@2001-01-01 08:15:00, 3.0@2001-01-01 08:20:00)']); SELECT tfloatSeqSet(ARRAY[tfloat 'Interp=Step;[1.0@2001-01-01 08:00:00, 2.0@2001-01-01 08:05:00, 2.0@2001-01-01 08:10:00]', 'Interp=Step;[3.0@2001-01-01 08:15:00, 3.0@2001-01-01 08:20:00)']); SELECT ttextSeqSet(ARRAY[ttext '[AAA@2001-01-01 08:00:00, AAA@2001-01-01 08:05:00)', '[BBB@2001-01-01 08:10:00, BBB@2001-01-01 08:15:00)']); SELECT tgeompointSeqSet(ARRAY[tgeompoint '[Point(0 0)@2001-01-01 08:00:00, Point(0 1)@2001-01-01 08:05:00, Point(0 1)@2001-01-01 08:10:00)', '[Point(0 1)@2001-01-01 08:15:00, Point(0 0)@2001-01-01 08:20:00)']); SELECT tgeogpointSeqSet(ARRAY[tgeogpoint 'Interp=Step;[Point(0 0)@2001-01-01 08:00:00, Point(0 0)@2001-01-01 08:05:00)', 'Interp=Step;[Point(1 1)@2001-01-01 08:10:00, Point(1 1)@2001-01-01 08:15:00)']); SELECT tfloatSeqSet(ARRAY[tfloat 'Interp=Step;[1.0@2001-01-01 08:00:00, 2.0@2001-01-01 08:05:00, 2.0@2001-01-01 08:10:00]', '[3.0@2001-01-01 08:15:00, 3.0@2001-01-01 08:20:00)']); -- ERROR: The temporal values must have the same interpolation
Otro conjunto de constructores para valores de conjunto de secuencias tiene como primer argumento una matriz de valores de instante correspondientes, y dos argumentos que establecen un intervalo de tiempo máximo y una distancia máxima tal que se introduce un espacio entre secuencias del resultado siempre que dos instantes de entrada consecutivos tengan un intervalo de tiempo o una distancia mayor que estos valores. Para puntos temporales, la distancia se especifica en unidades del sistema de coordenadas. Estos dos argumentos de brechas son opcionales, pero al menos uno de ellos debe especificarse. Además, cuando el tipo base es continuo, un último argumento adicional establece si la interpolación es escalonada o lineal. Si no se especifica este argumento, se asume que es lineal por defecto.
Los parámetros de la función dependen del tipo temporal. Por ejemplo, el parámetro de interpolación no está permitido para tipos temporales con subtipos discretos como tint
. De manera similar, el parámetro maxdist
no está permitido para tipos escalares como ttext
que no tienen una función de distancia estándar.
SELECT tintSeqSetGaps(ARRAY[tint '1@2001-01-01', '3@2001-01-02', '4@2001-01-03', '5@2001-01-05'], '1 day', 1); -- {[1@2001-01-01], [3@2001-01-02, 4@2001-01-03], [5@2001-01-05]} SELECT ttextSeqSetGaps(ARRAY[ttext 'AA@2001-01-01', 'BB@2001-01-02', 'AA@2001-01-03', 'CC@2001-01-05'], '1 day'); -- {["AA"@2001-01-01, "BB"@2001-01-02, "AA"@2001-01-03], ["CC"@2001-01-05]} SELECT asText(tgeompointSeqSetGaps(ARRAY[tgeompoint 'Point(1 1)@2001-01-01', 'Point(2 2)@2001-01-02', 'Point(3 2)@2001-01-03', 'Point(3 2)@2001-01-05'], '1 day', 1, 'step')); /* Interp=Step;{[POINT(1 1)@2001-01-01], [POINT(2 2)@2001-01-02, POINT(3 2)@2001-01-03], [POINT(3 2)@2001-01-05]} */