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

Jak usunąć odpowiednie wypełnienie w nazwie dnia w Oracle?

W bazie danych Oracle przy użyciu funkcji TO_CHAR() funkcja zwracająca nazwę dnia z daty, do nazwy dnia zostanie dodany dopełnienie, jeśli jest ona krótsza niż najdłuższa ważna nazwa dnia dla danego języka i kalendarza.

Cóż, to jest domyślne zachowanie. Możesz to jednak zmienić, jeśli chcesz.

Aby pominąć to dopełnienie, wystarczy poprzedzić element formatu nazwy dnia za pomocą fm .

Przykład

Załóżmy, że uruchamiamy następujący kod:

SELECT 
    TO_CHAR(date '2030-03-08', 'Day, DD Month YYYY')
FROM DUAL;

Wynik:

Friday   , 08 March     2030

Widzimy, że końcowe spacje zostały dodane do nazwy dnia i nazwy miesiąca.

Możemy użyć fm modyfikator formatu, aby pominąć tę spację:

SELECT 
    TO_CHAR(date '2030-03-08', 'fmDay, DD Month YYYY')
FROM DUAL;

Wynik:

Friday, 8 March 2030

Problem rozwiązany.

Zauważ, że miało to również dodatkową korzyść polegającą na pominięciu końcowych spacji z nazwy miesiąca.

Ukrył również wiodące zero z numeru dnia.

Możemy użyć wielu fm modyfikatory, aby dokładniej określić, które dopełnienie chcemy pominąć. Każdy fm w naszym formacie model włącza i wyłącza tryb wypełniania.

Załóżmy, że chcemy pominąć końcowe spacje w nazwach dnia i miesiąca, ale chcemy zachować początkowe zero w numerze dnia. W takim przypadku możemy wykonać następujące czynności:

SELECT 
    TO_CHAR(date '2030-03-08', 'fmDay, fmDD fmMonth YYYY')
FROM DUAL;

Wynik:

Friday, 8 March 2030

Powód, dla którego użyliśmy trzeciego fm (przed MONTH ) jest dlatego, że drugi fm ponownie włączono dopełnienie dla wszystkich kolejnych elementów formatu, co skutkowałoby zachowaniem końcowych spacji przez cały miesiąc.

Oto, co mam na myśli:

SELECT 
    TO_CHAR(date '2030-03-08', 'fmDay, fmDD Month YYYY')
FROM DUAL;

Wynik:

Friday, 08 March     2030 

W tym przypadku dopełnienie zostało pominięte w nazwie dnia, a następnie ponownie włączone dla numeru dnia, miesiąca i roku.

Na szczęście możemy dodać tyle fm modyfikatory, ponieważ potrzebujemy uzyskać pożądany wynik.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 12c Przestarzałe funkcje

  2. ORA-04091:tabela [blah] mutuje, wyzwalacz/funkcja może jej nie widzieć

  3. Jak zidentyfikować nieprawidłowe (uszkodzone) wartości przechowywane w kolumnach Oracle DATE?

  4. Co może spowodować zmianę Oracle ROWID?

  5. skuteczny sposób na sprawdzenie, czy istnieje wiersz tabeli