sql >> Databasteknik >  >> RDS >> Oracle

Oracle-datumjämförelse i where-klausul

Inte riktigt, DATE datatyp har inget format; den lagras internt i tabeller som 7-byte (år är 2 byte och månad, dag, timme, minut och sekund är 1 byte vardera). Användargränssnittet du använder (dvs SQL/PLUS, SQL Developer, Toad, etc.) kommer att hantera formateringen av en DATE från dess binära format till ett mänskligt läsbart format. I SQL/Plus (eller SQL Developer) är detta format baserat på NLS_DATE_FORMAT sessionsparameter .

Om DATE inmatas med endast dag, månad och år kommer tidskomponenten (förmodligen) att ställas in på 00:00:00 (midnatt).

Om du antar att tidskomponenten för din DOJ-kolumn alltid är midnatt då:

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

Om det inte alltid är midnatt då:

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

eller:

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


  1. Hur gör man en utökad infogning med JDBC utan att bygga strängar?

  2. Vad är meningen med att lagrade procedurer är förkompilerade?

  3. Symfony Filter fungerar inte

  4. Finns det något sätt att casta postgresql 9.3 datatyp så att den bara kan påverka en sida