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 dnia. Na przykład Tue
lub Wed
(zamiast Tuesday
lub Wednesday
).
Specyfikator formatu „Nazwa skróconego dnia” (%a
)
Klucz do zwracania krótkiej nazwy dnia przy użyciu DATE_FORMAT()
funkcją jest użycie odpowiedniego specyfikatora formatu.
W MariaDB specyfikator formatu dla krótkiej nazwy dnia to:%a
Przykład
Oto przykład do zademonstrowania:
SELECT DATE_FORMAT('2023-07-25', '%a');
Wynik:
+---------------------------------+ | DATE_FORMAT('2023-07-25', '%a') | +---------------------------------+ | Tue | +---------------------------------+
Oto kolejny przykład z różnych dni tygodnia:
SELECT
DATE_FORMAT('2023-07-24', '%a') AS "1",
DATE_FORMAT('2023-07-25', '%a') AS "2",
DATE_FORMAT('2023-07-26', '%a') AS "3",
DATE_FORMAT('2023-07-27', '%a') AS "4",
DATE_FORMAT('2023-07-28', '%a') AS "5",
DATE_FORMAT('2023-07-29', '%a') AS "6",
DATE_FORMAT('2023-07-30', '%a') AS "7";
Wynik:
+------+------+------+------+------+------+------+ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | +------+------+------+------+------+------+------+ | Mon | Tue | Wed | Thu | Fri | Sat | Sun | +------+------+------+------+------+------+------+
Możesz również zwrócić inne jednostki daty i czasu, ale ten artykuł dotyczy zwracania krótkiej nazwy dnia. 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 dnia z daty, która polega na odcięciu pierwszej części dnia.
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ć %a
specyfikator formatu, tak jak w poprzednim przykładzie, możemy użyć %W
specyfikator formatu, aby zwrócić pełną nazwę dnia, a następnie zwrócić skrócić ten wynik za pomocą funkcji takiej jak LEFT()
.
Przykład:
SELECT
DATE_FORMAT('2023-07-25', '%W') AS Full,
LEFT(DATE_FORMAT('2023-07-25', '%W'), 3) AS Short;
Wynik:
+---------+-------+ | Full | Short | +---------+-------+ | Tuesday | Tue | +---------+-------+
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-07-25', '%W') AS Full,
CAST(DATE_FORMAT('2023-07-25', '%W') AS CHAR(3)) AS Short;
Wynik:
+---------+-------+ | Full | Short | +---------+-------+ | Tuesday | Tue | +---------+-------+
Działa to dobrze podczas pracy z językiem angielskim (i być może z innymi językami). Zobaczmy jednak, co się stanie, gdy przejdziemy na inny język – powiedzmy japoński:
SELECT
DATE_FORMAT('2023-07-25', '%W', 'ja_JP') AS Full,
LEFT(DATE_FORMAT('2023-07-25', '%W', 'ja_JP'), 3) AS Short;
Wynik:
+-----------+-----------+ | Full | Short | +-----------+-----------+ | 火曜日 | 火曜日 | +-----------+-----------+
W tym przypadku nie ma różnicy.
Dla kontrastu, oto co się dzieje, gdy używamy %a
specyfikator formatu do zwrócenia krótkiej nazwy dnia:
SELECT
DATE_FORMAT('2023-07-25', '%W', 'ja_JP') AS Full,
DATE_FORMAT('2023-07-25', '%a', 'ja_JP') AS Short;
Wynik:
+-----------+-------+ | Full | Short | +-----------+-------+ | 火曜日 | 火 | +-----------+-------+
Dlatego polecam użycie %a
specyfikator formatu, gdy tylko jest to możliwe.