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.