Cada tipo temporal tiene una función de constructor con el mismo nombre que el tipo y un sufijo para el subtipo, donde los sufijos ‘_inst
’, ‘_instset
’, ‘_seq
’ y ‘_seqset
’ corresponden, respectivamente, a los subtipos instante, conjunto de instantes, secuencia y conjunto de secuencias. Ejemplos son tint_seq
o tgeompoint_seqset
. El uso de la función de constructor suele ser más conveniente que escribir una constante literal.
Un primer conjunto de funciones tiene dos argumentos, un tipo base y un tipo de tiempo, donde el último es un valor de timestamptz
, timestampset
, period
o periodset
para construir, respectivamente, un valor de subtipo instante, conjunto de instantes, secuencia o conjunto de secuencias. Las funciones para valores de secuencia o de conjunto de secuencias con tipo base continuo tienen además un tercer argumento opcional que es un booleano para indicar si el valor temporal resultante tiene interpolación lineal o no. Por defecto, este argumento es verdadero si no se especifica.
Otro conjunto de funciones para valores de conjunto de instantes tiene un solo argumento, que es una matriz de valores de instante correspondientes.
Otro conjunto de funciones para valores de secuencia tiene un argumento para la matriz de valores de instante correspondiente y dos argumentos booleanos opcionales que indican, respectivamente, si los límites izquierdo y derecho son inclusivos o exclusivos. Si estos argumentos no se especifican, se supone que son verdaderos por defecto. Además, las funciones para valores de secuencia con tipo base continuo tienen un argumento booleano adicional que indica si la interpolación es lineal o no. Si este argumento no se especifica, se asume que es verdadero por defecto.
Otro conjunto de funciones para valores de conjuntos de secuencias tiene un único argumento, que es una matriz de valores de secuencia correspondientes. Para valores de secuencia con tipo de base continuo, la interpolación del valor temporal resultante depende de la interpolación de las secuencias que la componen. Se genera un error si las secuencias que componen la matriz tienen interpolación diferentes.
A continuación, damos las funciones de constructor para los distintos subtipos.
Constructor para tipos temporales de subtipo instante
ttype_inst(base,timestamptz): ttype_inst
SELECT tbool_inst(true, '2001-01-01'); SELECT tint_inst(1, '2001-01-01');
Constructor para tipos temporales de subtipo conjunto de instantes
ttype_instset(base,timestampset): ttype_instset
ttype_instset(ttype_inst[]): ttype_instset
SELECT tfloat_instset(1.5, '{2001-01-01, 2001-01-02}'); SELECT ttext_instset('AAA', '{2001-01-01, 2001-01-02}'); SELECT tbool_instset(ARRAY[tbool 'true@2001-01-01 08:00:00','false@2001-01-01 08:05:00']); SELECT tint_instset(ARRAY[tint '1@2001-01-01 08:00:00', '2@2001-01-01 08:05:00']); SELECT tfloat_instset(ARRAY[tfloat '1.0@2001-01-01 08:00:00', '2.0@2001-01-01 08:05:00']); SELECT ttext_instset(ARRAY[ttext 'AAA@2001-01-01 08:00:00', 'BBB@2001-01-01 08:05:00']); SELECT tgeompoint_instset(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']); SELECT tgeogpoint_instset(ARRAY[tgeogpoint 'Point(1 1)@2001-01-01 08:00:00', 'Point(2 2)@2001-01-01 08:05:00']);
Constructor para tipos temporales de subtipo secuencia
tdisc_seq(base,period): tdisc_seq
tcont_seq(base,period,linear=true): tcont_seq
tdisc_seq(ttype_inst[],left_inc=true,right_inc=true}): tdisc_seq
tcont_seq(ttype_inst[],left_inc=true,right_inc=true,linear=true}): tcont_seq
SELECT tfloat_seq(1.5, '[2001-01-01, 2001-01-02]'); SELECT tgeompoint_seq('Point(0 0)', '[2001-01-01, 2001-01-02]', false); SELECT tbool_seq(ARRAY[tbool 'true@2001-01-01 08:00:00', 'true@2001-01-03 08:05:00'], true, true); SELECT tint_seq(ARRAY[tint(2,'2001-01-01 08:00:00'), tint(2,'2001-01-01 08:10:00')], true, false); SELECT tfloat_seq(ARRAY[tfloat '2.0@2001-01-01 08:00:00', '3@2001-01-03 08:05:00', '1@2001-01-03 08:10:00'], true, false); SELECT tfloat_seq(ARRAY[tfloat '2.0@2001-01-01 08:00:00', '3@2001-01-03 08:05:00', '1@2001-01-03 08:10:00'], true, true, false); SELECT ttext_seq(ARRAY[ttext('AAA', '2001-01-01 08:00:00'), ttext('BBB', '2001-01-03 08:05:00'), ttext('BBB', '2001-01-03 08:10:00')]); SELECT tgeompoint_seq(ARRAY[tgeompoint 'Point(0 0)@2001-01-01 08:00:00', 'Point(0 1)@2001-01-03 08:05:00', 'Point(1 1)@2001-01-03 08:10:00']); SELECT tgeogpoint_seq(ARRAY[tgeogpoint 'Point(0 0)@2001-01-01 08:00:00', 'Point(0 0)@2001-01-03 08:05:00'], true, true, false);
Constructor para tipos temporales de subtipo conjunto de secuencias
tdisc_seqset(base,periodset): tdisc_seqset
tcont_seqset(base,periodset,linear=true): tcont_seqset
ttype_seqset(ttype_seq[]): ttype_seqset
SELECT ttext_seqset('AAA', '{[2001-01-01, 2001-01-02], [2001-01-03, 2001-01-04]}'); SELECT tgeogpoint_seqset('Point(0 0)', '{[2001-01-01, 2001-01-02], [2001-01-03, 2001-01-04]}', false); SELECT tbool_seqset(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 tint_seqset(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 tfloat_seqset(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 tfloat_seqset(ARRAY[tfloat 'Interp=Stepwise;[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=Stepwise;[3.0@2001-01-01 08:15:00, 3.0@2001-01-01 08:20:00)']); SELECT ttext_seqset(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 tgeompoint_seqset(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 tgeogpoint_seqset(ARRAY[tgeogpoint 'Interp=Stepwise;[Point(0 0)@2001-01-01 08:00:00, Point(0 0)@2001-01-01 08:05:00)', 'Interp=Stepwise;[Point(1 1)@2001-01-01 08:10:00, Point(1 1)@2001-01-01 08:15:00)']); SELECT tfloat_seqset(ARRAY[tfloat 'Interp=Stepwise;[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: Input sequences must have the same interpolation