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

SÅDAN HENTES DATA MELLEM 2 DATOER I ORACLE SQL UDVIKLER

En dato har ikke et format - den er lagret internt i databasen som 7-bytes (repræsenterer år, måned, dag, time, minut og sekund), og det er ikke før hvilken brugergrænseflade du bruger (dvs. SQL/Plus, SQL Developer, Java osv.) forsøger at vise den til dig, brugeren, og konverterer det til noget, du ville finde meningsfuldt (normalt en streng), at datoen har et format.

For at rette din forespørgsel skal du blot omgive datostrengen i enkelte anførselstegn og bruge YY for at matche det 2-cifrede årstal (ellers vil Oracle antage, at 17 i formatet YYYY er året 0017 og århundredet bliver ikke, som du forventer ):

select sum(TOTAL_AMOUNT)
from   table a
where  trn_date between TO_DATE('01-APR-17', 'DD-MON-YY')
                    AND TO_DATE('31-MAR-17', 'DD-MON-YY'); 

Du kan dog også bruge bogstaver for dato (og springe over at skulle matche datoformatmodellen):

select sum(TOTAL_AMOUNT)
from   table a
where  trn_date between DATE '2017-04-01'
                    AND DATE '2017-05-31'; 


  1. Returner forskellen mellem to (datoer og klokkeslæt) PHP

  2. Vis åbne transaktioner i MySQL

  3. Hvordan kan jeg opsætte et databaseskema, hvor der er to samtidige mange-mange relationer?

  4. Hvordan grupperer jeg efter uge i MySQL?