Oracle SQL-query voor datumnotatie

Ik word altijd in de war met datumformaat in Oracle SQL-query en breng minuten samen met Google, kan iemand me de eenvoudigste manier uitleggen om aan te pakken wanneer we een ander formaat van datum in databasetabel hebben?

Ik heb bijvoorbeeld een datumkolom als ES_DATE, bevat gegevens als 27-APR-12 11.52.48.294030000 AM van het tijdstype Timestamp (6) met lokale tijdzone.

Ik schreef eenvoudige select query om gegevens voor die specifieke dag op te halen en het geeft mij niets terug. Kan iemand me uitleggen?

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

of

select * from table where es_date = '27-APR-12';

Antwoord 1, Autoriteit 100%

to_date()Retourneert een datum om 00:00:00, dus u moet “verwijderen” de minuten van de datum die u vergelijkt met:

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 aan het doen bent.

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

Hoewel u het recht hebt gedaan in het gebruik van to_date()en niet afhankelijk bent van conversie van het gegevenstype, 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'


Antwoord 2, autoriteit 14%

als je dezelfde datumnotatie gebruikt en een selectiequery hebt waarbij de datum in orakel staat:

  select count(id) from Table_name where TO_DATE(Column_date)='07-OCT-2015';

To_DATE geleverd door orakel


Antwoord 3, autoriteit 3%

u kunt deze opdracht gebruiken door uw gegevens op te halen. dit zal je gegevens extraheren…

select * from employees where to_char(es_date,'dd/mon/yyyy')='17/jun/2003';

Other episodes