>
 

Inicio

Novedades de pgsql en la 7.0

Entrevista con Bruce Momjian

Manejo de Estilos de Fechas en PostgreSQL

Introducci�n a los Triggers en C para PostgreSQL

Ligas interesantes

Formato de salida de fechas y horas

La manera en que Postgres forma la salida de las fechas se puede modificar por medio se la sentencia SET DateStyle TO 'estilo_deseado';

En donde estilo_deseado puede tomar los valores: ISO , SQL , Postgres y German , de acuerdo a la siguiente tabla:

Tabla 1. Estilos de entrada de fechas y horas

Especificaci�n del estiloDescripci�nEjemplo
'ISO'Norma ISO-86011997-12-17 07:37:16-08
'SQL'Estilo tradicional12/17/1997 07:37:16.00 PST
'Postgres'Estilo originalWed Dec 17 07:37:16 1997 PST
'German'Estilo regional17.12.1997 07:37:16.00 PST

Los diversos estilos tienen las variantes European y NonEuropean o US. El primer mundo se olvida de que el Sur tambi�n existe.

A continuaci�n aparece un script desarrollado con Perl y DBI, en donde se muestra como se modifica el formato de salida al cambiar el estilo de la fecha. La estructura de la tabla utilizada es la siguiente:

                                      Table "persona"
      Attribute      |   Type    |                         Modifier                         
---------------------+-----------+----------------------------------------------------------
 id_persona          | integer   | not null default nextval('persona_id_persona_seq'::text)
 id_titulo           | integer   | 
 nombre              | text      | 
 apel_pat            | text      | 
 apel_mat            | text      | 
 salario             | money     | 
 fecha_contrato      | date      | 
 fecha_actualizacion | timestamp | 
Index: persona_id_persona_key

Observe que el campo fecha_actualizacion es de tipo timestamp y que en la sentencia SQL del script estamos recuperando la fecha y la hora, y, por medio de la funci�n date(), solamente la fecha, para visualizar claramente el efecto del cambio de formato.

#!/usr/bin/perl -w

# La vida es simple con DBI
use DBI;

# Base de datos de prueba
$dbname = 'pruebas';

# Conexi�n a la base de datos
$dbh = DBI -> connect("dbi:Pg:dbname=$dbname");

# M�s vale...
defined ($dbh) or die "No pude conectar a la base de datos.\n";

# Arreglo de estilos de salida para postgresqldocsql 7.x
@estilos_salida = qw(Postgres ISO SQL German);

# Fijamos el estilo de entrada, aunque no es usado en este script.
$dbh->do("SET DATESTYLE TO 'European'");

# Nuestra sentencia SQL nos trae la fecha de actualizaci�n de los datos
$sql = "SELECT fecha_actualizacion, date(fecha_actualizacion) FROM persona WHERE id_persona = 1;";

print "-=" x 35, "\n";
print "Estilo          Fecha/Hora                Fecha\n";
print "-=" x 35, "\n";

# Visitamos cada estilo y hacemos la consulta
foreach $estilo (@estilos_salida) {
	$dbh->do("SET DATESTYLE TO '$estilo'");
	$sth=$dbh->prepare($sql);
	$sth->execute;
	while ( @row = $sth->fetchrow_array ) {
		print "$estilo:\t\t$row[0]\t\t$row[1]\n";
	}
}

La salida debe ser algo como:

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Estilo          Fecha/Hora                		Fecha
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Postgres:	Tue 01 Aug 11:43:10 2000 CDT		01-08-2000
ISO:		2000-08-01 11:43:10-05			2000-08-01
SQL:		01/08/2000 11:43:10.00 CDT		01/08/2000
German:		01.08.2000 11:43:10.00 CDT		01.08.2000

Es notable la diferencia en que se despliegan las fechas en el estilo Postgres, en un caso muestra el nombre abreviado del d�a y del mes, pero al usar la funci�n date() el formato es num�rico. Esto es de primordial importancia cuando se requiere analizar sint�cticamente la salida de este tipo de datos, ya sea para desplegarla o validarla.