sql >> Database >  >> RDS >> Oracle

Oracle SQL-query voor datumnotatie

to_date() retourneert een datum om 00:00:00, dus u moet de minuten "verwijderen" van de datum waarmee u vergelijkt:

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

U wilt waarschijnlijk een index maken op trunc(es_date) als dat iets is dat u regelmatig doet.

De letterlijke '27-APR-12' kan heel gemakkelijk mislukken als het standaard datumformaat wordt gewijzigd in iets anders. Zorg er dus voor dat je altijd to_date() . gebruikt met een correct formaatmasker (of een ANSI-letterlijk:date '2012-04-27' )

Hoewel je er goed aan gedaan hebt to_date() te gebruiken en niet afhankelijk van impliciete conversie van gegevenstypes, heeft uw gebruik van to_date() nog steeds een subtiele valkuil vanwege het formaat 'dd-MON-yy' .

Met een andere taalinstelling kan dit gemakkelijk mislukken, b.v. TO_DATE('27-MAY-12','dd-MON-yy') wanneer NLS_LANG is ingesteld op Duits. Vermijd alles in het formaat dat in een andere taal anders kan zijn. Een jaartal van vier cijfers gebruiken en alleen cijfers, b.v. 'dd-mm-yyyy' of 'yyyy-mm-dd'



  1. Het converteren van kleine Oracle lange onbewerkte waarden naar andere typen

  2. plv8 schakel de functie uitvoeren en voorbereiden uit in eval()

  3. SQL Server:alle dagen in een datumbereik selecteren, zelfs als er enkele dagen geen gegevens zijn

  4. Hoe beïnvloedt de storage-backend Datomic?