Hi Tom,
I am seeing a strange issue with a query which queries data from a partitioned table having sub-partitions. Please see table, query and the error. Can you please help, what could be the reason for this error?
CREATE TABLE trans_details
(
trans_date TIMESTAMP (6) NOT NULL,
key_field VARCHAR2(30),
process_date DATE
)
PARTITION BY RANGE (trans_date)
INTERVAL ( NUMTOYMINTERVAL (1, 'MONTH') )
SUBPARTITION BY LIST (key_field)
SUBPARTITION TEMPLATE (SUBPARTITION P_XX VALUES ('XX'),
SUBPARTITION P_AA VALUES ('AA'),
SUBPARTITION P_DEFAULT VALUES (DEFAULT))
(PARTITION PART_JUL_17 VALUES LESS THAN (TO_DATE (' 2017-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_AUG_17 VALUES LESS THAN (TO_DATE (' 2017-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_SEP_17 VALUES LESS THAN (TO_DATE (' 2017-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_OCT_17 VALUES LESS THAN (TO_DATE (' 2017-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_NOV_17 VALUES LESS THAN (TO_DATE (' 2017-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_DEC_17 VALUES LESS THAN (TO_DATE (' 2018-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_JAN_18 VALUES LESS THAN (TO_DATE (' 2018-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_FEB_18 VALUES LESS THAN (TO_DATE (' 2018-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_MAR_18 VALUES LESS THAN (TO_DATE (' 2018-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_APR_18 VALUES LESS THAN (TO_DATE (' 2018-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_MAY_18 VALUES LESS THAN (TO_DATE (' 2018-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_JUN_18 VALUES LESS THAN (TO_DATE (' 2018-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_JUL_18 VALUES LESS THAN (TO_DATE (' 2018-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_AUG_18 VALUES LESS THAN (TO_DATE (' 2018-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_SEP_18 VALUES LESS THAN (TO_DATE (' 2018-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_OCT_18 VALUES LESS THAN (TO_DATE (' 2018-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_NOV_18 VALUES LESS THAN (TO_DATE (' 2018-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_DEC_18 VALUES LESS THAN (TO_DATE (' 2019-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_JAN_19 VALUES LESS THAN (TO_DATE (' 2019-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_FEB_19 VALUES LESS THAN (TO_DATE (' 2019-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_MAR_19 VALUES LESS THAN (TO_DATE (' 2019-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_APR_19 VALUES LESS THAN (TO_DATE (' 2019-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_MAY_19 VALUES LESS THAN (TO_DATE (' 2019-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_JUN_19 VALUES LESS THAN (TO_DATE (' 2019-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_JUL_19 VALUES LESS THAN (TO_DATE (' 2019-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_AUG_19 VALUES LESS THAN (TO_DATE (' 2019-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_SEP_19 VALUES LESS THAN (TO_DATE (' 2019-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_OCT_19 VALUES LESS THAN (TO_DATE (' 2019-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_NOV_19 VALUES LESS THAN (TO_DATE (' 2019-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')),
PARTITION PART_DEC_19 VALUES LESS THAN (TO_DATE (' 2020-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('28-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('28-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('28-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('28-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('23-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('28-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('28-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('23-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('28-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('23-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('23-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('28-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('28-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('28-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('23-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('23-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('23-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('23-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('28-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('28-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('23-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('28-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('23-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('28-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('28-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('28-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
Insert into TRANS_DETAILS (TRANS_DATE,KEY_FIELD,PROCESS_DATE) values (to_timestamp('24-01-18 12:00:00.000000000 AM','DD-MM-RR HH12:MI:SS.FF AM'),'AA',to_date('10-01-18','DD-MM-RR'));
COMMIT;
Following Query is Successful:
SELECT *
FROM TRANS_DETAILS g
WHERE ( ( g.TRANS_DATE < LAST_DAY (TO_DATE ('01012018', 'ddmmyyyy hh24:mi:ss')) + 1
AND g.process_date < TO_DATE ('01-02-2018', 'dd-MM-yyyy HH24:mi:ss')
AND g.process_date >= TO_DATE ('01-01-2018', 'dd-MM-yyyy HH24:mi:ss'))
OR ( g.TRANS_DATE >= TO_DATE ('01012018', 'ddmmyyyy hh24:mi:ss')
AND g.TRANS_DATE < TO_DATE ('01-02-2018', 'dd-MM-yyyy HH24:mi:ss')));
But below query is failing, only change in the query is the change in time format
SELECT *
FROM TRANS_DETAILS g
WHERE ( ( g.TRANS_DATE < LAST_DAY (TO_DATE ('01-01-2018 00:00:00', 'dd-MM-yyyy HH24:mi:ss')) + 1
AND g.process_date < TO_DATE ('01-02-2018 00:00:00', 'dd-MM-yyyy HH24:mi:ss')
AND g.process_date >= TO_DATE ('01-01-2018 00:00:00', 'dd-MM-yyyy HH24:mi:ss'))
OR ( g.TRANS_DATE >= TO_DATE ('01-01-2018 00:00:00', 'dd-mm-yyyy hh24:mi:ss')
AND g.TRANS_DATE < TO_DATE ('01-02-2018 00:00:00', 'dd-MM-yyyy HH24:mi:ss')));
Error:
ORA-01841: (full) year must be between -4713 and +9999, and not be 0
Can you please help me to understand the reason for this error?