Home » Non-English Forums » Spanish » particion por mes sin incluir el año (columna tipo DATE) (10g2r, Solaris 5.10)
particion por mes sin incluir el año (columna tipo DATE) [message #307063] Mon, 17 March 2008 14:36 Go to next message
mauric
Messages: 4
Registered: March 2008
Junior Member
Hola

necesito particionar una tabla (HASH) con una columna tipo DATE, pero no interesa el ao, es decir solo necesito los meses (enero a diciembre).

Alguien sabe como podria hacer esto?

desde ya gracias por su tiempo.

Mauric
Re: particion por mes sin incluir el año (columna tipo DATE) [message #307077 is a reply to message #307063] Mon, 17 March 2008 15:34 Go to previous messageGo to next message
Michel Cadot
Messages: 59407
Registered: March 2007
Location: Nanterre, France, http://...
Senior Member
Account Moderator
extract(month from mycolumn)

Regards
Michel
Re: particion por mes sin incluir el año (columna tipo DATE) [message #307085 is a reply to message #307063] Mon, 17 March 2008 16:13 Go to previous messageGo to next message
Barbara Boehmer
Messages: 7995
Registered: November 2002
Location: California, USA
Senior Member
Es posible con LIST PARTITION o RANGE PARTITION.

-- LIST PARTITION:
SCOTT@orcl_11g> ALTER SESSION SET NLS_LANGUAGE = 'SPANISH'
  2  /

Session altered.

SCOTT@orcl_11g> ALTER SESSION SET NLS_DATE_LANGUAGE = 'SPANISH'
  2  /

Session altered.

SCOTT@orcl_11g> CREATE TABLE una_tabla
  2    (una_columna  DATE,
  3  	mes	     NUMBER)
  4    PARTITION BY LIST (mes)
  5  	 (PARTITION enero      VALUES (1),
  6  	  PARTITION febrero    VALUES (2),
  7  	  PARTITION marzo      VALUES (3),
  8  	  PARTITION abril      VALUES (4),
  9  	  PARTITION mayo       VALUES (5),
 10  	  PARTITION junio      VALUES (6),
 11  	  PARTITION julio      VALUES (7),
 12  	  PARTITION agosto     VALUES (8),
 13  	  PARTITION septiembre VALUES (9),
 14  	  PARTITION octubre    VALUES (10),
 15  	  PARTITION noviembre  VALUES (11),
 16  	  PARTITION diciembre  VALUES (12))
 17  /

Table created.

SCOTT@orcl_11g> CREATE OR REPLACE TRIGGER una_tabla_mes
  2    BEFORE INSERT OR UPDATE ON una_tabla
  3    FOR EACH ROW
  4  BEGIN
  5    :NEW.mes := TO_NUMBER (TO_CHAR (:NEW.una_columna, 'MM'));
  6  END una_tabla_mes;
  7  /

Trigger created.

SCOTT@orcl_11g> SHOW ERRORS
No errors.
SCOTT@orcl_11g> INSERT ALL
  2  INTO una_tabla (una_columna) VALUES (SYSDATE)
  3  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -1) - 1)
  4  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -2) + 2)
  5  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -3) - 3)
  6  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -4) + 4)
  7  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -5) - 5)
  8  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -6) + 6)
  9  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -7) - 7)
 10  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -8) + 8)
 11  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -9) - 9)
 12  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -10) + 10)
 13  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -11) - 11)
 14  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -12) + 12)
 15  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -14) - 13)
 16  SELECT * FROM DUAL
 17  /

14 rows created.

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla
  6  ORDER  BY una_columna
  7  /

FECHA                              MES
--------------------------- ----------
el 4 de enero de 2007                1
el 29 de marzo de 2007               3
el 6 de abril de 2007                4
el 27 de mayo de 2007                5
el 8 de junio de 2007                6
el 25 de julio de 2007               7
el 10 de agosto de 2007              8
el 23 de septiembre de 2007          9
el 12 de octubre de 2007            10
el 21 de noviembre de 2007          11
el 14 de diciembre de 2007          12
el 19 de enero de 2008               1
el 16 de febrero de 2008             2
el 17 de marzo de 2008               3

14 rows selected.

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (enero)
  6  /

FECHA                              MES
--------------------------- ----------
el 19 de enero de 2008               1
el 4 de enero de 2007                1

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (febrero)
  6  /

FECHA                              MES
--------------------------- ----------
el 16 de febrero de 2008             2

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (marzo)
  6  /

FECHA                              MES
--------------------------- ----------
el 17 de marzo de 2008               3
el 29 de marzo de 2007               3

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (abril)
  6  /

FECHA                              MES
--------------------------- ----------
el 6 de abril de 2007                4

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (mayo)
  6  /

FECHA                              MES
--------------------------- ----------
el 27 de mayo de 2007                5

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (junio)
  6  /

FECHA                              MES
--------------------------- ----------
el 8 de junio de 2007                6

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (julio)
  6  /

FECHA                              MES
--------------------------- ----------
el 25 de julio de 2007               7

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (agosto)
  6  /

FECHA                              MES
--------------------------- ----------
el 10 de agosto de 2007              8

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (septiembre)
  6  /

FECHA                              MES
--------------------------- ----------
el 23 de septiembre de 2007          9

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (octubre)
  6  /

FECHA                              MES
--------------------------- ----------
el 12 de octubre de 2007            10

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (noviembre)
  6  /

FECHA                              MES
--------------------------- ----------
el 21 de noviembre de 2007          11

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (diciembre)
  6  /

FECHA                              MES
--------------------------- ----------
el 14 de diciembre de 2007          12

SCOTT@orcl_11g> 




-- RANGE PARTITION:
SCOTT@orcl_11g> ALTER SESSION SET NLS_LANGUAGE = 'SPANISH'
  2  /

Session altered.

SCOTT@orcl_11g> ALTER SESSION SET NLS_DATE_LANGUAGE = 'SPANISH'
  2  /

Session altered.

SCOTT@orcl_11g> CREATE TABLE una_tabla
  2    (una_columna  DATE,
  3  	mes	     NUMBER)
  4    PARTITION BY RANGE (mes)
  5  	 (PARTITION enero      VALUES LESS THAN (2),
  6  	  PARTITION febrero    VALUES LESS THAN (3),
  7  	  PARTITION marzo      VALUES LESS THAN (4),
  8  	  PARTITION abril      VALUES LESS THAN (5),
  9  	  PARTITION mayo       VALUES LESS THAN (6),
 10  	  PARTITION junio      VALUES LESS THAN (7),
 11  	  PARTITION julio      VALUES LESS THAN (8),
 12  	  PARTITION agosto     VALUES LESS THAN (9),
 13  	  PARTITION septiembre VALUES LESS THAN (10),
 14  	  PARTITION octubre    VALUES LESS THAN (11),
 15  	  PARTITION noviembre  VALUES LESS THAN (12),
 16  	  PARTITION diciembre  VALUES LESS THAN (13))
 17  /

Table created.

SCOTT@orcl_11g> CREATE OR REPLACE TRIGGER una_tabla_mes
  2    BEFORE INSERT OR UPDATE ON una_tabla
  3    FOR EACH ROW
  4  BEGIN
  5    :NEW.mes := TO_NUMBER (TO_CHAR (:NEW.una_columna, 'mm'));
  6  END una_tabla_mes;
  7  /

Trigger created.

SCOTT@orcl_11g> SHOW ERRORS
No errors.
SCOTT@orcl_11g> INSERT ALL
  2  INTO una_tabla (una_columna) VALUES (SYSDATE)
  3  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -1) - 1)
  4  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -2) + 2)
  5  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -3) - 3)
  6  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -4) + 4)
  7  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -5) - 5)
  8  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -6) + 6)
  9  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -7) - 7)
 10  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -8) + 8)
 11  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -9) - 9)
 12  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -10) + 10)
 13  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -11) - 11)
 14  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -12) + 12)
 15  INTO una_tabla (una_columna) VALUES (ADD_MONTHS (SYSDATE, -14) - 13)
 16  SELECT * FROM DUAL
 17  /

14 rows created.

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla
  6  ORDER  BY una_columna
  7  /

FECHA                              MES
--------------------------- ----------
el 4 de enero de 2007                1
el 29 de marzo de 2007               3
el 6 de abril de 2007                4
el 27 de mayo de 2007                5
el 8 de junio de 2007                6
el 25 de julio de 2007               7
el 10 de agosto de 2007              8
el 23 de septiembre de 2007          9
el 12 de octubre de 2007            10
el 21 de noviembre de 2007          11
el 14 de diciembre de 2007          12
el 19 de enero de 2008               1
el 16 de febrero de 2008             2
el 17 de marzo de 2008               3

14 rows selected.

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (enero)
  6  /

FECHA                              MES
--------------------------- ----------
el 19 de enero de 2008               1
el 4 de enero de 2007                1

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (febrero)
  6  /

FECHA                              MES
--------------------------- ----------
el 16 de febrero de 2008             2

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (marzo)
  6  /

FECHA                              MES
--------------------------- ----------
el 17 de marzo de 2008               3
el 29 de marzo de 2007               3

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (abril)
  6  /

FECHA                              MES
--------------------------- ----------
el 6 de abril de 2007                4

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (mayo)
  6  /

FECHA                              MES
--------------------------- ----------
el 27 de mayo de 2007                5

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (junio)
  6  /

FECHA                              MES
--------------------------- ----------
el 8 de junio de 2007                6

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (julio)
  6  /

FECHA                              MES
--------------------------- ----------
el 25 de julio de 2007               7

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (agosto)
  6  /

FECHA                              MES
--------------------------- ----------
el 10 de agosto de 2007              8

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (septiembre)
  6  /

FECHA                              MES
--------------------------- ----------
el 23 de septiembre de 2007          9

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (octubre)
  6  /

FECHA                              MES
--------------------------- ----------
el 12 de octubre de 2007            10

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (noviembre)
  6  /

FECHA                              MES
--------------------------- ----------
el 21 de noviembre de 2007          11

SCOTT@orcl_11g> SELECT 'el ' || TO_CHAR (una_columna, 'fmdd')
  2  	    || ' de ' || TO_CHAR (una_columna, 'fmmonth')
  3  	    || ' de ' || TO_CHAR (una_columna, 'yyyy') fecha,
  4  	    mes
  5  FROM   una_tabla PARTITION (diciembre)
  6  /

FECHA                              MES
--------------------------- ----------
el 14 de diciembre de 2007          12

SCOTT@orcl_11g> 


Re: particion por mes sin incluir el año (columna tipo DATE) [message #307099 is a reply to message #307085] Mon, 17 March 2008 17:32 Go to previous message
mauric
Messages: 4
Registered: March 2008
Junior Member
muchas gracias!!!

Mauric
Previous Topic: Tamaño de next e initial ?
Next Topic: Problemas de corrupcion en datablocks sobre plataforma PA-RISC 8900
Goto Forum:
  


Current Time: Tue Oct 21 08:09:35 CDT 2014

Total time taken to generate the page: 0.09144 seconds