W MariaDB możesz użyć DATE_FORMAT()
funkcja zwracająca różne części daty z daty. Jedną z rzeczy, które możesz zwrócić, jest krótka nazwa miesiąca. Na przykład Nov
lub Dec
(zamiast Nov
lub December
).
Specyfikator formatu „Krótka nazwa miesiąca” (%b
)
Klucz do zwracania krótkiej nazwy miesiąca przy użyciu DATE_FORMAT()
funkcją jest użycie odpowiedniego specyfikatora formatu.
W MariaDB specyfikator formatu dla skróconej nazwy miesiąca to:%b
Przykład
Oto przykład do zademonstrowania:
SELECT DATE_FORMAT('2023-12-25', '%b');
Wynik:
+---------------------------------+ | DATE_FORMAT('2023-12-25', '%b') | +---------------------------------+ | Dec | +---------------------------------+
Oto kolejny przykład z różnych miesięcy w roku:
SELECT
DATE_FORMAT('2023-01-25', '%b') AS "1",
DATE_FORMAT('2023-02-25', '%b') AS "2",
DATE_FORMAT('2023-03-25', '%b') AS "3",
DATE_FORMAT('2023-04-25', '%b') AS "4",
DATE_FORMAT('2023-05-25', '%b') AS "5",
DATE_FORMAT('2023-06-25', '%b') AS "6",
DATE_FORMAT('2023-07-25', '%b') AS "7",
DATE_FORMAT('2023-08-25', '%b') AS "8",
DATE_FORMAT('2023-09-25', '%b') AS "9",
DATE_FORMAT('2023-10-25', '%b') AS "10",
DATE_FORMAT('2023-11-25', '%b') AS "11",
DATE_FORMAT('2023-12-25', '%b') AS "12";
Wynik (przy użyciu wyjścia pionowego):
1: Jan 2: Feb 3: Mar 4: Apr 5: May 6: Jun 7: Jul 8: Aug 9: Sep 10: Oct 11: Nov 12: Dec
Możesz również zwrócić inne jednostki daty i czasu, ale ten artykuł dotyczy w szczególności zwracania krótkiej nazwy miesiąca. Zobacz ciągi formatujące MariaDB, aby uzyskać listę specyfikatorów formatu, których można używać z DATE_FORMAT()
.
Inne podejścia
Istnieją inne sposoby na uzyskanie krótkiej nazwy miesiąca z daty, która obejmuje odcięcie pierwszej części miesiąca.
Jednak może to być bardziej podatne na błędy niż powyższa metoda (plus jest bardziej zawiła). Korzystając z tej metody, możesz uzyskać nieoczekiwane wyniki, zwłaszcza podczas pracy z różnymi językami.
Oto kilka przykładów, aby pokazać, o co mi chodzi.
Zamiast używać %b
specyfikator formatu, tak jak w poprzednim przykładzie, możemy użyć %M
specyfikator formatu, aby zwrócić pełną nazwę miesiąca, a następnie zwrócić skrócić ten wynik za pomocą funkcji takiej jak LEFT()
.
Przykład:
SELECT
DATE_FORMAT('2023-10-25', '%M') AS Full,
LEFT(DATE_FORMAT('2023-10-25', '%M'), 3) AS Short;
Wynik:
+---------+-------+ | Full | Short | +---------+-------+ | October | Oct | +---------+-------+
Moglibyśmy alternatywnie użyć funkcji takiej jak CAST()
przekonwertować na typ danych składający się tylko z trzech znaków, na przykład:
SELECT
DATE_FORMAT('2023-10-25', '%M') AS Full,
CAST(DATE_FORMAT('2023-10-25', '%M') AS CHAR(3)) AS Short;
Wynik:
+---------+-------+ | Full | Short | +---------+-------+ | October | Oct | +---------+-------+
Działa to dobrze podczas pracy z językiem angielskim (i być może z kilkoma innymi językami). Zobaczmy jednak, co się stanie, gdy przejdziemy na inny język – powiedzmy tajski:
SELECT
DATE_FORMAT('2023-10-25', '%M', 'th_TH') AS Full,
LEFT(DATE_FORMAT('2023-10-25', '%M', 'th_TH'), 3) AS Short;
Wynik:
+--------------------+-----------+ | Full | Short | +--------------------+-----------+ | ตุลาคม | ตุล | +--------------------+-----------+
Oto jednak, co się dzieje, gdy używamy %b
specyfikator formatu, aby zwrócić skróconą nazwę miesiąca:
SELECT
DATE_FORMAT('2023-10-25', '%M', 'th_TH') AS Full,
DATE_FORMAT('2023-10-25', '%b', 'th_TH') AS Short;
Wynik:
+--------------------+----------+ | Full | Short | +--------------------+----------+ | ตุลาคม | ต.ค. | +--------------------+----------+
Zwraca inny wynik.
Dlatego polecam używanie %b
specyfikator formatu, gdy tylko jest to możliwe.