Bizare date field behavior in an Oracle database.
ilssac Nov 14, 2011 2:04 PMI have this bizare data problem quering an oracle date field.
Look at these two result sets.
Missing Two records.:
| COUNTY_CD | CONAME | FILE_DATE | TRANSMISSIONS | RECORDS | NO_ERROR_RECORDS | ERROR_RECORDS | TOTAL_ERRORS | |
| 03 | AMADOR | 07-NOV-11 | 10 | 405 | 396 | 9 | 9 | |
| 10 | FRESNO | 07-NOV-11 | 1 | 204 | 200 | 4 | 4 | |
| 16 | KINGS | 07-NOV-11 | 3 | 1296 | 1110 | 186 | 194 | |
| 20 | MADERA | 07-NOV-11 | 1 | 552 | 535 | 17 | 17 | |
| 51 | SUTTER | 07-NOV-11 | 1 | 43 | 5 | 38 | 38 |
WHERE
r.file_date BETWEEN TO_DATE('2011-11-07 00:00:00','YYYY-MM-DD HH24:MI:SS')
AND TO_DATE('2011-11-07 15:00:00','YYYY-MM-DD HH24:MI:SS')
All Expected records
| COUNTY_CD | CONAME | FILE_DATE | TRANSMISSIONS | RECORDS | NO_ERROR_RECORDS | ERROR_RECORDS | TOTAL_RECORDS | |
| 03 | AMADOR | 07-NOV-11 | 10 | 405 | 396 | 9 | 9 | |
| 10 | FRESNO | 07-NOV-11 | 1 | 204 | 200 | 4 | 4 | |
| 16 | KINGS | 07-NOV-11 | 3 | 1296 | 1110 | 186 | 194 | |
| 20 | MADERA | 07-NOV-11 | 1 | 552 | 535 | 17 | 17 | |
| 50 | STANISLAUS | 07-NOV-11 | 2 | 17002 | 7165 | 9837 | 10028 | |
| 51 | SUTTER | 07-NOV-11 | 1 | 43 | 5 | 38 | 38 |
WHERE
r.file_date BETWEEN TO_DATE('2011-11-07 00:00:00','YYYY-MM-DD HH24:MI:SS')
AND TO_DATE('2011-11-07 15:59:59','YYYY-MM-DD HH24:MI:SS')
Can anybody tell me why looking for recrods by the FILE_DATE field that has no time portion, it is a 'DATE' data type field, would produce different results based on different time parameters passed into the WHERE clause? This has me really confused and I just can not figure out why this behavior changes which makes me leary to trust a work around solution of just apending random time data to the where clause.
Below it the entire SQL query from the origanal source.
SELECT r.county_cd, c.coname, COUNT(unique r.file_name) AS transmissions, count(r.use_no) AS records, count(r.use_no) - count(e.use_no) AS no_error_records, count(e.use_no) AS error_records, sum(e.errors) AS total_errors FROM raw_pur r INNER JOIN pur_lookup l ON (r.use_no = l.use_no AND r.year = l.seq_year) LEFT OUTER JOIN ( SELECT year, use_no, count(use_no) AS errors FROM errors WHERE NOT (error_code = 17 OR error_code = 20 OR error_code = 72 OR error_code = 52 OR (error_code = 12 AND error_type = 'POSSIBLE') OR (error_code = 69 AND error_type = 'POSSIBLE') OR (error_code = 37 AND error_type = 'POSSIBLE') OR (error_code = 39 AND error_type = 'POSSIBLE')) GROUP BY year, use_no ) e ON (r.year = e.year AND r.use_no = e.use_no) INNER JOIN county c ON (r.county_cd = c.county_cd) WHERE r.file_date BETWEEN <cfqueryparam value="#form.fromDate#" cfsqltype="cf_sql_date"> AND <cfqueryparam value="#form.toDate#" cfsqltype="cf_sql_date"> GROUP BY r.county_cd, c.coname ORDER BY r.county_cd

