Listado completo de tutoriales

17 - Tipo de dato fecha y hora


Ya explicamos que al crear una tabla debemos elegir la estructura adecuada, esto es, definir los campos y sus tipos más precisos, según el caso.

Para almacenar valores de tipo FECHA Y HORA PostgreSQL dispone de tres tipos:

1) date: almacena una fecha en el rango de 4713 antes de crísto hasta 32767 después de cristo.

2) time: Almacena la hora del día.

3) timestamp: Almacena la fecha y la hora del día.

Las fechas se ingresan entre comillas simples.

Para almacenar valores de tipo fecha se permiten como separadores "/", "-","." entre otros.

PostgreSQL requiere que se ingrese la fecha con el formato aaaa/mm/dd:

 insert into empleados values('Ana Gomez','22222222','2008/12/31');

PostgreSQL permite configurar el formato de ingreso de la fecha seteando la variable de entorno llamada DATESTYLE:

SET DATESTYLE TO 'European';

Con el ejemplo anterior luego podemos ingresar una fecha con el formato Europeo que es dd/mm/aaaa:

 insert into empleados values('Pablo Rodriguez','11111111','31/12/2008');

Otros valores de seteo son:

ISO          utiliza fechas y horas de estilo ISO 8601.

SQL          utiliza fechas y horas de estilo Oracle/Ingres.

Postgres     utiliza el formato tradicional de Postgres.

European     utiliza dd/mm/aaaa para la representación numérica de las fechas.

NonEuropean  utiliza mm/dd/aaaa para la representación numérica de las fechas.

German       utiliza dd.mm.aaaa para la representación numérica de las fechas.

US           igual que 'NonEuropean'

DEFAULT      recupera los valores por defecto ('US,Postgres')

Para almacenar solo la hora debemos utilizar el tipo time. En un campo tipo time podemos almacenar un valor en el rango: 00:00:00.00 23:59:59.99.

 insert into asistencia(fecha,hora) values ('2008/12/31','13:00:59');

Por último si queremos almacenar la fecha y la hora en un único campo debemos definirlo de tipo timestamp:

 insert into asistencia (fechahora) values ('2008/12/31 13:00:00.59');

Ingresemos el siguiente lote de comandos SQL en pgAdmin:

 drop table if exists asistencia;
 
 create table asistencia(
  dni char(8),
  fecha date,
  hora time,
  primary key (dni)
 );

 -- Ingresamos un registro:
 insert into asistencia(dni,fecha,hora) values ('11111111','2008/12/31','13:00:59');

 -- Mostramos el registro:
 select * from asistencia;

 -- Borramos la tabla:

 drop table asistencia;

 -- Creamos nuevamente la tabla pero definimos un solo campo para almacenar
 -- la fecha y hora de ingreso del empleado:
 create table asistencia(
  dni char(8),
  fechahora timestamp,
  primary key (dni)
 );

 -- Ingresamos un registro:
 insert into asistencia (dni,fechahora) values ('11111111','2008/12/31 13:00:00.59');

 -- Mostramos el registro:
 select * from asistencia;

 -- Cambiamos el seteo de fecha para ingresar con el formato dia/mes/año:
 set datestyle to 'European';

 -- Ingresamos un nuevo registro con el nuevo formato:
 insert into asistencia (dni,fechahora) values ('22222222','21/12/2018 13:00:00.59');

-- Mostramos el registro:
 select * from asistencia;

La ejecución de este lote de comandos SQL genera una salida similar a:

PostgreSQL pgAdmin date time timestamp


Retornar