La Tabla de Tiempo en Oracle

9 11 2007

Finalmente tuve la oportunidad de hacer el equivalente en Oracle de la tabla de tiempo. Asume que hay autoconversion de caracteres a numeros, si no es así en la base de datos que están usando habría que añadirle el TO_NUMBER antes de cada TO_CHAR para las columnas numéricas.

/*
Tabla de Tiempo en Oracle
Adrián Ceballos
HaciendoCubos.com
*/
CREATE TABLE Tiempo (
       TiempoID         int NOT NULL,
       Fecha            date NOT NULL,
       Año              int NOT NULL,
       MesID            int NOT NULL,
       Mes              varchar2(10) NOT NULL,
       Cuarto           int NOT NULL,
       Semana           int NOT NULL,
       NumDiaSemana     int NOT NULL,
       DiaSemana        varchar2(15) NOT NULL
);
ALTER TABLE Tiempo
       ADD PRIMARY KEY (TiempoID);

Y el llenado de la tabla. Hay que jugar con el TO_CHAR para cambiar el día de la semana. En Bochgoch pueden encontrar una excelente referencia de los formatos usados en el TO_CHAR.

declare
FechaFin date;
Fecha date;
begin

Fecha    := to_date('2000-01-01','yyyy-MM-dd');
FechaFin := to_date('2010-12-31','yyyy-MM-dd');

WHILE Fecha < FechaFin LOOP

     DBMS_OUTPUT.PUT_LINE('Mes: ' || TO_CHAR(Fecha,'YYYYMMDD') );

     INSERT INTO Tiempo
     SELECT
     TO_CHAR(Fecha,'YYYYMMDD') AS TIEMPO_ID,
     Fecha,
     TO_CHAR(Fecha,'YYYY') AS YEAR,
     TO_CHAR(Fecha,'YYYYMM') AS MES_ID,
     TO_CHAR(Fecha,'MON-YY') AS MES,
     TO_CHAR(Fecha,'YYYYQ') AS TRIMESTRE,
     TO_CHAR(Fecha, 'YYYYIW') AS SEMANA,
     TO_CHAR(Fecha,'D'),
     TO_CHAR(Fecha,'DY') AS DIA_SEMANA
     FROM DUAL;
     SELECT Fecha+1 into Fecha from dual;

end loop;

end;

 

Technorati tags: ,


Acciones

Información

4 respuestas

22 08 2008
Rae

Excelente procedimiento, solo hay que quitar el codigo HTML que se incrusto en el procedimeinto , me sirvio bastante este procedimiento, tks

22 10 2008
Adrian

esta línea cambia el idioma a Ingles:

alter session set nls_territory=america nls_language=american;

23 01 2009
Adriana

Hola Adrian,

Tengo entendido que Artus soporta bases de datos de Oracle… es muy probable que proximamente este trabajando en un proyecto asi y la verdad no tengo la menor idea de como funcione esto. Me gustaria saber si tienes información al respecto (diseño e importacion a Artus).

Gracias!!! =)

23 01 2009
Adrian

Hola Adriana,

mmm, como te lo explico, trabaja igualito que si fuera SQLServer o MySQL.
Has trabajado antes con Artus? puedes trabajar en Oracle con el modelo rolap, por ahi anda un post que dice como hacer un cubo en Artus. Este te servirá bastante.

sasludos

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s




Seguir

Get every new post delivered to your Inbox.