sql >> Databasteknik >  >> RDS >> Oracle

Oracle SQL-fråga för datumformat

to_date() returnerar ett datum kl. 00:00:00, så du måste "ta bort" protokollet från datumet du jämför med:

select * 
from table
where trunc(es_date) = TO_DATE('27-APR-12','dd-MON-yy')

Du vill förmodligen skapa ett index på trunc(es_date) om det är något du gör regelbundet.

Den bokstavliga '27-APR-12' kan misslyckas mycket lätt om standarddatumformatet ändras till något annat. Så se till att du alltid använder to_date() med en korrekt formatmask (eller en ANSI-literal:date '2012-04-27' )

Även om du gjorde rätt när du använde to_date() och utan att förlita sig på omvandling av implicit datatyp har din användning av to_date() fortfarande en subtil fallgrop på grund av formatet 'dd-MON-yy' .

Med en annan språkinställning kan detta lätt misslyckas, t.ex. TO_DATE('27-MAY-12','dd-MON-yy') när NLS_LANG är inställt på tyska. Undvik allt i formatet som kan vara annorlunda på ett annat språk. Med ett fyrsiffrigt årtal och endast siffror t.ex. 'dd-mm-yyyy' eller 'yyyy-mm-dd'



  1. Få alla infogade ID:n när du infogar flera rader med en enda fråga

  2. Uppgradera din databas till PostgreSQL version 10 - Vad du bör veta

  3. Tidszon medveten datetime till sträng?

  4. Fråga prestanda skillnad pl/sql för all infogning och vanlig SQL-infogning