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

Jak usunąć wiodące zera z dat w Oracle?

W Oracle Database możesz użyć fm (tryb wypełnienia) modyfikator formatu, aby pominąć wszystkie wiodące zera, które mogą być zastosowane do daty. Ten modyfikator formatu eliminuje dopełnienie, które obejmuje wiodące zera i końcowe spacje.

Aby użyć fm modyfikator formatu, uwzględnij go w modelu formatu podczas określania sposobu formatowania dat. Na przykład przy użyciu TO_CHAR() funkcja formatowania dat lub w parametrach NLS, takich jak NLS_DATE_FORMAT parametr podczas ustawiania formatu daty dla bieżącej sesji.

Przykład

Oto przykład do zademonstrowania:

SELECT 
    TO_CHAR(DATE '2009-08-01', 'DD-MM-YY') AS "Without fm",
    TO_CHAR(DATE '2009-08-01', 'fmDD-MM-YY') AS "With fm"
FROM DUAL;

Wynik:

   Without fm    With fm 
_____________ __________ 
01-08-09      1-8-9     

Widzimy, że oryginalny wynik (bez fm modyfikator) zwraca wiodące zera dla wszystkich części daty. W tym przypadku fm modyfikator pomijał wiodące zero we wszystkich trzech częściach daty.

fm modyfikator wpływa na wynik tylko wtedy, gdy faktycznie w wyniku znajdują się wiodące zera.

Oto data zawierająca części dat, które zajmują dwie cyfry i dlatego nie mają wiodących zer:

SELECT 
    TO_CHAR(DATE '2029-12-01', 'DD-MM-YY') AS "Without fm",
    TO_CHAR(DATE '2029-12-01', 'fmDD-MM-YY') AS "With fm"
FROM DUAL;

Wynik:

   Without fm    With fm 
_____________ __________ 
01-12-29      1-12-29    

Jak określić tryb wypełniania tylko w niektórych częściach daty

Powyższy przykład pominął wiodące zero we wszystkich częściach daty. Z dnia, miesiąca i roku usunięto wiodące zero. Dzieje się tak, ponieważ gdy umieścimy pojedynczy fm na początku modelu formatu pomija wszystkie kolejne wiodące zera w wyniku.

Załóżmy, że chcemy tylko usunąć początkowe zero z dnia i miesiąca, ale zachować je w roku. W takim przypadku możemy wykonać następujące czynności:

SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-MM-fmYY')
FROM DUAL;

Wynik:

1-8-09

fm modyfikator w zasadzie działa jak przełącznik. Gdy dodasz jeden, pomija zera do końca lub do momentu napotkania innego fm modyfikator. Jeśli istnieje drugi fm modyfikatora, to wiodące zera nie są pomijane poza tym punktem i tak dalej.

Oto, co się dzieje, gdy dołączymy trzy fm modyfikatory – jeden przed każdą częścią daty:

SELECT TO_CHAR(DATE '2009-08-01', 'fmDD-fmMM-fmYY')
FROM DUAL;

Wynik:

1-08-9

W tym przypadku fm modyfikator był w zasadzie włączony, a następnie wyłączony, a następnie ponownie włączony.

Parametry NLS

Możesz także określić tryb wypełniania w parametrach NLS, takich jak NLS_DATE_FORMAT parametr podczas ustawiania formatu daty dla bieżącej sesji.

Przykład:

ALTER SESSION SET NLS_DATE_FORMAT = 'fmDD-MM-fmRR';

SELECT DATE '2009-08-07' FROM DUAL;

Wynik:

7-8-09

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORACLE Jak używać szpuli z dynamiczną lokalizacją szpuli

  2. Hibernacja natywnego zapytania — kolumna char(3)

  3. Duże wykorzystanie przestrzeni z crfclust.bdb

  4. Tworzenie profili w Oracle dla bezpieczeństwa użytkownika

  5. problem ORA-00001:naruszone ograniczenie unikatowe podczas INSERT/UPDATE