Tiposestándar SQL

CAST

Convierte un valor de un tipo a otro: texto a número, texto a fecha, número a texto.

Sintaxis

CAST(<valor> AS <tipo>)
<valor>::<tipo>

La forma ::<tipo> hace lo mismo y es más corta, pero solo existe en PostgreSQL. La necesitas cuando los datos llegan como texto o cuando un tipo estorba en un cálculo.

Datos para los ejemplos

orders

idcreated_atamount
12026-07-03 10:15:00120.50
22026-07-28 18:40:0080.25
32026-08-09 09:05:00199.99
42026-08-21 14:30:0045.00
52026-09-02 11:00:0064.75

Estas tablas ya están creadas en el entorno de pruebas y los ejemplos de abajo las usan. ¿Quieres repetirlo en tu propia base de datos? Copia el SQL.

Texto a número y a fecha
SELECT CAST('42' AS integer) + 1 AS number,
CAST('2026-09-13' AS date) AS day;
numberday
432026-09-13
Lo mismo con ::
SELECT '42'::integer + 1 AS number,
'2026-09-13'::date + 7 AS week_later;
numberweek_later
432026-09-20

Puedes convertir a fecha y sumarle días al momento.

Importes de pedidos como enteros
SELECT id, amount,
CAST(amount AS integer) AS whole
FROM orders;
idamountwhole
1120.50121
280.2580
3199.99200
445.0045
564.7565

120.50 se convirtió en 121: convertir a integer redondea, no quita la parte decimal.

Ten en cuenta

Si el texto no se parece al tipo de destino, la consulta falla: CAST('abc' AS integer) — invalid input syntax for type integer. Una sola fila «rota» en la tabla rompe toda la consulta.

Convertir un número decimal a integer redondea: CAST(2.5 AS integer) da 3. Para quitar sin más la parte decimal, usa TRUNC.

:: es solo de PostgreSQL. Si la consulta tiene que funcionar también en otros SGBD, escribe CAST(… AS …).

Funciones relacionadas

Más detalles en el curso