Funciones de conversión
Puede utilizar las funciones de formato SQL Netezza Performance Server para convertir tipos de datos (fecha/hora, enteros, coma flotante, numéricos) en cadenas formateadas y para convertir de cadenas formateadas a tipos de datos específicos.
Todas las funciones to_* utilizan un convenio de llamada común:
el primer argumento es el valor que se debe formatear y el segundo argumento
es una plantilla que define el formato de salida o entrada. Los patrones utilizados por estas plantillas se describen en Patrones de plantillas para conversiones fecha/hora.
date en un tipo de datos ' timestamp '.| Tipo | Descripción | Ejemplos |
|---|---|---|
hex_to_binary(VARCHAR) |
Convierte una serie codificada de caracteres hexadecimales en su binario equivalente. Devuelve un valor VARBINARY. | |
hex_to_geometry(VARCHAR) |
Convierte una serie codificada de caracteres hexadecimales en su valor ST_GEOMETRY equivalente. | |
int_to_string(INT8, byteint) |
Convierte un valor decimal en una serie hexadecimal, octal,
decimal o binaria. La función devuelve un valor VARCHAR. El primer
argumento especifica el valor decimal a convertir y el segundo
argumento especifica la base del sistema de números al que se debe convertir.
|
|
string_to_int(VARCHAR, byteint) |
Convierte una serie hexadecimal, octal, decimal o binaria
en un valor decimal. La función devuelve un valor INT8. El primer
argumento especifica la serie a convertir y el segundo
argumento especifica la base del sistema de números del primer argumento.
|
|
to_char(value,template) |
Convierte el valor especificado (que puede ser una
fecha, una indicación de fecha y hora, o un valor real, de precisión doble o numérico)
a una serie de caracteres.
|
Véase el cuadro 2. |
to_number(text,template) |
Convierte una serie de caracteres en un valor numérico. | select to_number('12,454.8-', '99G999D9S');Devuelve: |
to_date(text,template) |
Convierte una serie de caracteres en una fecha. Se salta los espacios en blanco múltiples, a no ser que se especifique el prefijo FX como primer elemento de la plantilla. | select to_date('31 Dec 2015','DD Mon YYYY');Devuelve: |
select to_date('31 Dec 2015','FXDD Mon
YYYY');Devuelve: |
||
select to_date('31 Dec 2015 20:33:33','DD
Mon YYYY HH24":"MI":"SS');Devuelve: |
||
to_timestamp(text,template) |
Convierte una serie de caracteres en una indicación de fecha y hora. Se salta los espacios en blanco múltiples, a no ser que se especifique el prefijo FX como primer elemento de la plantilla. | select to_timestamp('31 Dec 2015 08:38:40 pm', 'DD
Mon YYYY HH:MI:SS am');Devuelve: Tenga en cuenta que el indicador de meridiano (am o pm) de la plantilla no tiene por qué coincidir con el de la serie de entrada. Sin embargo, debe tener el mismo formato (con o sin puntos). |
Ejemplos de la función to_char
Una sentencia SELECT que contenga una de las expresiones que se muestran en la tabla siguiente devuelve el resultado indicado.
| Expresión | Resultado | Comentarios |
|---|---|---|
to_char(date '2015-02-14', 'YYYY Month') |
'2013 February ' |
Hay un espacio en blanco al final tras "February" porque se reservan nueve caracteres (el número de letras de "September") para el nombre de un mes, con independencia de cuántas letras se necesitan realmente. |
to_char(date '2015-02-14', 'YYYY FMMonth') |
'2013 February' |
El prefijo FM elimina el espacio en blanco
al final tras "February". |
to_char(timestamp '2015-02-14 20:19:07',
'HH24:MI:SS') |
'20:19:07' |
|
to_char(timestamp '2015-02-14 20:19:07',
'HH:MI:SS am') |
'08:19:07 pm' |
El indicador de meridiano especificado por la plantilla se ajusta en la salida para corresponderse con la hora (am para horas de las 0 a las 12, o pm para horas de las 12 a las 23). El formato del indicador de meridiano especificado por la plantilla (mayúsculas o minúsculas, con o sin puntos) se utiliza para la salida. |
to_char(timestamp '2015-02-14 20:19:07',
'Day, DD HH:MI:SS am') |
|
Hay tres espacios en blanco al final tras "Monday" porque se reservan nueve caracteres (el número de letras de "Wednesday") para el nombre de un día de la semana, con independencia de cuántas letras se necesitan realmente. |
to_char(timestamp '2015-02-14 20:19:07',
'FMDay, DD HH:MI:SS am') |
|
El prefijo FM elimina los espacios en blanco
al final tras "Monday". También elimina el cero a la izquierda de la
fecha, las horas y los segundos. |
to_char(timestamp '2015-02-14 20:19:07',
'Day, DD FMHH:MI:SS am') |
|
El prefijo FM elimina los ceros a la
izquierda de las horas y los segundos. |
to_char(125, '999') |
' 125' |
El resultado es una serie de 4 caracteres, uno para cada posición de la plantilla, más un espacio en blanco adicional que antecede al número en lugar de un signo más (+). |
to_char(-125, '999') |
'-125' |
No hay ningún espacio en blanco antes del número debido al signo menos (-). |
to_char(125, '"999D999') |
' 125.000' |
La plantilla especifica que la salida debe incluir tres posiciones decimales. El resultado es una serie de 8 caracteres, uno para cada posición de la plantilla (el delimitador decimal cuenta como un lugar en la plantilla), más un espacio en blanco adicional que antecede al número en lugar de un signo más (+). |
to_char(-125, '"The number is "999"."') |
'The number is -125.' |
Se pasa el texto que hay entre comillas dobles. |
to_char(125, '"The number is "FM999"."') |
The number is 125. |
El prefijo FM suprime el
espacio en blanco extra que normalmente iría delante del número positivo. |
to_char(12.7, '99.9') |
' 12.7' |
El resultado es una serie de 5 caracteres, uno para cada posición de la plantilla, más un espacio en blanco adicional que antecede al número en lugar de un signo más (+). |
to_char(12.7, 'FM99.9') |
'12.7' |
El prefijo FM suprime el
espacio en blanco extra que normalmente iría delante del número positivo. |
to_char(0.1, '999.99') |
|
El resultado es una serie de 7 caracteres, uno para cada posición de la plantilla. (El separador decimal cuenta como un puesto en la plantilla). |
to_char(-0.1, '999.99') |
|
El resultado es una serie de 7 caracteres, uno para cada posición de la plantilla. (El separador decimal cuenta como un puesto en la plantilla). |
to_char(-0.1, 'FM999.99') |
'-.1' |
El prefijo FM suprime los
espacios en blanco iniciales y el cero final. |
to_char(.1, '0.9') |
' 0.1' |
El 0 de la plantilla especifica que deben añadirse tantos ceros a la izquierda como posiciones sin usar haya en la plantilla. El 0 cuenta como una posición en la plantilla. |
to_char(-12.7, '0999.9') |
'-0012.7' |
El 0 de la plantilla especifica que deben añadirse tantos ceros a la izquierda como posiciones sin usar haya en la plantilla. El 0 cuenta como una posición en la plantilla. |
to_char(12.7, '90999.9') |
|
El resultado es una serie de 8 caracteres, uno para cada posición de la plantilla, más un espacio en blanco adicional que antecede al número en lugar de un signo más (+). |
to_char(-12.7, '9999999') |
|
El resultado es una serie de 8 caracteres, uno para cada posición de la plantilla, más un carácter adicional para el signo menos (-). |
to_char(485, '9 9 9') |
' 4 8 5' |
|
to_char(1485, '9,999') |
' 1,485' |
|
to_char(1485, '9G999') |
' 1,485' |
El patrón G representa el
delimitador de grupo especificado para la configuración regional. |
to_char(148.5, '999.999') |
' 148.500' |
|
to_char(148.5, 'FM999.999') |
'148.5' |
|
to_char(148.5, 'FM999.990') |
'148.500' |
|
to_char(148.5, '999D999') |
' 148.500' |
El delimitador decimal que se utiliza depende de la configuración regional. |
to_char(3148.5, '9G999D999') |
' 3,148.500' |
El patrón G representa el
delimitador de grupo especificado para la configuración regional. |
to_char(125,'S999') |
'+125' |
No hay ningún espacio en blanco antes del número, ya que
el patrón S especifica que el signo siempre debe
incluirse en la salida. |
to_char(125, '999S') |
'125+' |
No hay ningún espacio en blanco antes del número, ya que
el patrón S especifica que el signo siempre debe
incluirse en la salida. |
to_char(-485, '999S') |
'485-' |
|
to_char(-485, 'MI999') |
'-485' |
Para un número negativo, el patrón MI
coloca un signo más (+) o menos (-) en la posición correspondiente. |
to_char(-485, '999MI') |
'485-' |
|
to_char(485, 'MI999') |
' 485' |
Para un número positivo, el patrón MI
coloca un espacio en blanco en la posición correspondiente. El patrón MI
no afecta al espacio en blanco inicial que antecede a un número positivo. |
to_char(485, '999MI') |
' 485 ' |
|
to_char(485, 'FM999MI') |
'485 ' |
El prefijo FM suprime el
espacio en blanco extra que normalmente iría delante del número positivo, pero
no afecta al espacio en blanco al final que añade el sufijo MI. |
to_char(485, 'PL999') |
'+485' |
Para un número positivo, el patrón PL
coloca un signo más (+) en la posición correspondiente. |
to_char(485, '999PL') |
'485+' |
|
to_char(-485, '999PL') |
'-485 ' |
Para un número negativo, el patrón PL
coloca un espacio en blanco en la posición correspondiente. El sufijo PL
no afecta al signo menos (-) que antecede a un número negativo. |
to_char(-485, 'PL999') |
' -485 ' |
|
to_char(-3485, 'SG9999') |
'-3485' |
|
to_char(-3485, 'S9G999') |
'-3,485' |
|
to_char(-3485, '99SG99') |
'34-85' |
|
to_char(-485, '999PR') |
'<485>' |
|
to_char(485, '999PR') |
' 485' |
|
to_char(485, 'FM999PR') |
'485' |
El prefijo FM suprime el
espacio en blanco extra que normalmente iría delante de un número positivo. |
to_char(485, 'RN') |
'CDLXXXV' |
|
to_char(5.2, 'RN') |
'V' |
Los numerales romanos ignoran las fracciones decimales. |
to_char(482, '999th') |
' 482nd' |
Un sufijo th produce el
sufijo ordinal adecuado (st, nd, rd o th). |
to_char(485.8, '"Pre: "FM999" Post:" .999') |
'Pre: 485 Post: .800' |
El prefijo FM suprime el
espacio en blanco extra que normalmente iría delante de un número positivo. |
to_char(485.8, '"Pre: "FM999" Post:" .999') |
'Pre: -485 Post: .800' |
El prefijo FM no afectar a
los números negativos. |
to_char(12, '99V999') |
' 12000' |
|
to_char(12.4, '99V999') |
' 12400' |
|
to_char(12.45, '99V9') |
' 125' |