Oracle date query fix
mouse 1956 · person cloud · link
Last update
2016-09-30
2016
09-30
« — »

In Oracle, a seconda della configurazione, i campi di tipo date hanno anche ore, minuti e secondi... e le query spesso non funzionano come si vorrebbe :-(

È bene salvare le date impostando il tempo a mezzogiorno (basta un'ora diversa da mezzanotte) in modo che quando c'รจ il cambio di ora tra legale e solare non avvenga un cambio di data.

Per i confronti invece ecco una soluzione:

1
2
3
4
5
6
7
-- se il campo NON ha un indice:
SELECT * FROM tabella WHERE TRUNC(campo_data) = DATE '2016-09-20';

-- se il campo ha un indice:
SELECT * FROM tabella
WHERE campo_data >= DATE '2016-09-20'
AND campo_data  < DATE '2016-09-20' + 1;

Fonti: Connor McDonald's Oracle blog, Oracle forum