Home » Non-English Forums » Spanish » particion por mes sin incluir el año (columna tipo DATE) (10g2r, Solaris 5.10)
|
|
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 |
|
Barbara Boehmer
Messages: 9100 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>
|
|
|
|
Goto Forum:
Current Time: Tue Dec 03 12:07:18 CST 2024
|