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

porównaj datę w poleceniu sql

Nie. Data/sygnatury czasowe nie ma żadnego formatu . Oracle nie przechowuje daty/sygnatur czasowych w widocznym formacie. Widoczny format służy tylko do wyświetlania zamiar. Data jest przechowywana wewnętrznie w 7 bajtach, co jest zastrzeżonym formatem Oracle .

Oczywiście, że możesz. Możesz użyć TRUNC który obcina część czasu i pozostawia tylko część daty i typ danych pozostaje jako data.

Na przykład

SQL> SELECT TRUNC(SYSTIMESTAMP) my_tmstmp FROM DUAL;

MY_TMSTMP
----------
2015-05-29

Tak więc otrzymujesz dane wejściowe użytkownika w tym formacie jako ciąg . Musisz najpierw konwertować go na DATE przy użyciu TO_DATE a następnie porównaj.

Na przykład

WHERE TRUNC(dt_column) < TO_DATE('05/29/2015 12:07:58', 'MM/DD/YYYY HH24:MI:SS')

Jak już powiedziałem, jeśli chcesz zignorować część czasu, zastosuj TRUNC .

Jednak zastosowanie TRUNC w dniu kolumna pominie każdy zwykły indeks na tej kolumnie. Z punktu widzenia wydajności lepiej użyj warunku zakresu dat .

Na przykład

WHERE dt_column
BETWEEN 
        TO_DATE('05/29/2015 12:07:58', 'MM/DD/YYYY HH24:MI:SS')
AND     
        TO_DATE('05/29/2015 12:07:58', 'MM/DD/YYYY HH24:MI:SS') +1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Siatki bezpieczeństwa

  2. Jak najpierw sortować według liczb za pomocą zapytania Oracle SQL?

  3. Przykład transakcji autonomicznej Oracle

  4. Instrukcje DDL w PL/SQL?

  5. Jak zainstalować moduł node-oracledb na AWS centos6 za pomocą wiersza poleceń?