to_date()
zwraca datę o godzinie 00:00:00, więc musisz "usunąć" minuty od daty, do której porównujesz:
select *
from table
where trunc(es_date) = TO_DATE('27-APR-12','dd-MON-yy')
Prawdopodobnie chcesz utworzyć indeks na trunc(es_date)
jeśli to jest coś, co robisz regularnie.
Literał '27-APR-12'
może się bardzo łatwo zawieść, jeśli domyślny format daty zostanie zmieniony na inny. Upewnij się więc, że zawsze używasz to_date()
z odpowiednią maską formatu (lub literałem ANSI:date '2012-04-27'
)
Chociaż dobrze postąpiłeś używając to_date()
i nie polegasz na niejawnej konwersji typów danych, twoje użycie to_date() nadal ma subtelną pułapkę ze względu na format 'dd-MON-yy'
.
Przy innym ustawieniu języka może to łatwo zawieść, np. TO_DATE('27-MAY-12','dd-MON-yy')
gdy NLS_LANG jest ustawiony na niemiecki. Unikaj wszystkiego w formacie, który może być inny w innym języku. Posługując się czterocyfrowym rokiem i tylko cyframi, np. 'dd-mm-yyyy'
lub 'yyyy-mm-dd'