Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle-Datumsvergleich in der Where-Klausel

Nicht ganz, das DATE Datentyp hat kein Format; es wird intern in Tabellen als 7-bytes (Jahr ist 2 Byte und Monat, Tag, Stunde, Minute und Sekunde sind jeweils 1 Byte). Die von Ihnen verwendete Benutzeroberfläche (z. B. SQL/PLUS, SQL Developer, Toad usw.) übernimmt die Formatierung eines DATE von seinem Binärformat in ein für Menschen lesbares Format. In SQL/Plus (oder SQL Developer) basiert dieses Format auf dem NLS_DATE_FORMAT Sitzungsparameter .

Wenn das DATE nur mit Tag, Monat und Jahr eingegeben wird, dann wird die Zeitkomponente (wahrscheinlich) auf 00:00:00 gesetzt (Mitternacht).

Angenommen, die Zeitkomponente für Ihre DOJ-Spalte ist immer Mitternacht, dann:

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

Wenn es nicht immer Mitternacht ist:

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

oder:

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