Post by Ruben CurtoHola lista, es posible convertir un campo entero a tipo fecha?
# select numero::date + '10 days'::interval from tabla;
Cannot cast type 'int4' to 'date'
Por lo que amplías en una sub-respuesta, si esta operación no es
demasiado frecuetne, te sugiero hacer una función que haga la
conversión - Es bastante ineficiente, porque trata a tu número como
una cadena, lo parte en tres sub-cadenas y lo vuelve a pegar, antes de
hacer un cast a date. Además, es asquerosamente poco
confiable... ¿Puedes jurar que en tu BD no hay ninguna fecha como
'20061510' en vez de '20061015' por poner un ejemplo?
CREATE OR REPLACE FUNCTION int_to_date(integer) RETURNS date AS
$$
DECLARE
entrada ALIAS FOR $1;
cadena char(8);
dia char(2);
mes char(2);
anio char(4);
BEGIN
cadena = entrada::text;
anio = substr(cadena,1,4);
mes = substr(cadena,5,2);
dia = substr(cadena,7,2);
RETURN (anio || '-' || mes || '-' || dia)::date;
END;
$$ language 'plpgsql';
Si vas a realizar esta operación con cierta frecuencia, claro, te
conviene correr esto sobre _toda_ tu tabla y eliminar la columna en
formato texto.
Saludos,
--
Gunnar Wolf - gwolf-***@public.gmane.org - (+52-55)5623-0154 / 1451-2244
PGP key 1024D/8BB527AF 2001-10-23
Fingerprint: 0C79 D2D1 2C4E 9CE4 5973 F800 D80E F35A 8BB5 27AF