I MariaDB kan du bruge DATE_FORMAT()
funktion til at returnere forskellige datodele fra en dato. En af de ting, du kan returnere, er navnet på den korte dag. For eksempel Tue
eller Wed
(i stedet for Tuesday
eller Wednesday
).
Formatspecifikationen "Short Day Name" (%a
)
Nøglen til at returnere navnet på den korte dag, når du bruger DATE_FORMAT()
funktionen er at bruge den relevante formatspecifikation.
I MariaDB er formatspecifikationen for kortdagsnavnet:%a
Eksempel
Her er et eksempel til demonstration:
SELECT DATE_FORMAT('2023-07-25', '%a');
Resultat:
+---------------------------------+ | DATE_FORMAT('2023-07-25', '%a') | +---------------------------------+ | Tue | +---------------------------------+
Her er et andet eksempel, der løber gennem de forskellige dage i ugen:
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";
Resultat:
+------+------+------+------+------+------+------+ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | +------+------+------+------+------+------+------+ | Mon | Tue | Wed | Thu | Fri | Sat | Sun | +------+------+------+------+------+------+------+
Du kan også returnere andre dato- og tidsenheder, men denne artikel handler specifikt om at returnere navnet på den korte dag. Se MariaDB Format Strings for en liste over formatspecifikationer, der kan bruges med DATE_FORMAT()
.
Andre tilgange
Der er andre måder at få det korte dagsnavn på fra en dato, der involverer afhugning af den første del af dagen.
Dette kan dog være mere udsat for fejl end ovenstående metode (plus det er mere indviklet). Du kan få nogle uventede resultater, når du bruger denne metode, især når du arbejder med forskellige sprog.
Her er nogle eksempler for at vise, hvad jeg mener.
I stedet for at bruge %a
formatspecifikation som vi gjorde i det foregående eksempel, kunne vi bruge %W
formatspecifikation for at returnere hele dagen navn, returner derefter forkort dette resultat med en funktion som LEFT()
.
Eksempel:
SELECT
DATE_FORMAT('2023-07-25', '%W') AS Full,
LEFT(DATE_FORMAT('2023-07-25', '%W'), 3) AS Short;
Resultat:
+---------+-------+ | Full | Short | +---------+-------+ | Tuesday | Tue | +---------+-------+
Vi kunne alternativt bruge en funktion som CAST()
at konvertere til en datatype med kun tre tegn, såsom dette:
SELECT
DATE_FORMAT('2023-07-25', '%W') AS Full,
CAST(DATE_FORMAT('2023-07-25', '%W') AS CHAR(3)) AS Short;
Resultat:
+---------+-------+ | Full | Short | +---------+-------+ | Tuesday | Tue | +---------+-------+
Dette fungerer fint, når du arbejder med det engelske sprog (og måske nogle andre sprog). Men lad os se, hvad der sker, når vi skifter til et andet sprog – for eksempel japansk:
SELECT
DATE_FORMAT('2023-07-25', '%W', 'ja_JP') AS Full,
LEFT(DATE_FORMAT('2023-07-25', '%W', 'ja_JP'), 3) AS Short;
Resultat:
+-----------+-----------+ | Full | Short | +-----------+-----------+ | 火曜日 | 火曜日 | +-----------+-----------+
I dette tilfælde er der ingen forskel.
I modsætning hertil er her, hvad der sker, når vi bruger %a
formatspecifikation for at returnere kortdagens navn:
SELECT
DATE_FORMAT('2023-07-25', '%W', 'ja_JP') AS Full,
DATE_FORMAT('2023-07-25', '%a', 'ja_JP') AS Short;
Resultat:
+-----------+-------+ | Full | Short | +-----------+-------+ | 火曜日 | 火 | +-----------+-------+
Så jeg vil anbefale at bruge %a
formatspecifikation, når det er muligt.