Oracle
 sql >> Database >  >> RDS >> Oracle

Confronto della data Oracle nella clausola where

Non proprio, la DATE il tipo di dati non ha un formato; è archiviato internamente in tabelle come 7-byte (l'anno è 2 byte e mese, giorno, ora, minuti e secondi sono 1 byte ciascuno). L'interfaccia utente che stai utilizzando (ad esempio SQL/PLUS, SQL Developer, Toad, ecc.) gestirà la formattazione di un DATE dal suo formato binario a un formato leggibile dall'uomo. In SQL/Plus (o SQL Developer) questo formato è basato su NLS_DATE_FORMAT parametro di sessione .

Se il DATE viene inserito utilizzando solo il giorno, il mese e l'anno, quindi la componente temporale (probabilmente) verrà impostata su 00:00:00 (mezzanotte).

Supponendo che la componente temporale per la tua colonna DOJ sia sempre mezzanotte, allora:

SELECT COUNT(*)
FROM   students
WHERE  doj = TO_DATE( your_param, 'dd/mm/yyyy' )

Se non è sempre mezzanotte, allora:

SELECT COUNT(*)
FROM   students
WHERE  TRUNC( doj ) = TO_DATE( your_param, 'dd/mm/yyyy' )

oppure:

SELECT COUNT(*)
FROM   students
WHERE  doj >= TO_DATE( your_param, 'dd/mm/yyyy' )
AND    doj <  TO_DATE( your_param, 'dd/mm/yyyy' ) + INTERVAL '1' DAY