Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zapytanie Oracle SQL dla formatu daty

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'



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PL SQL jak wybrać wszystkie kolumny

  2. Koszt zapytania:globalne tabele tymczasowe a kolekcje (wirtualne tablice)

  3. Wymiana ciągu Oracle

  4. ORA-28001:hasło wygasło, nie można naprawić

  5. Obliczanie procentu w SQL