I MariaDB kan du använda DATE_FORMAT()
funktion för att returnera olika datumdelar från ett datum. En av sakerna du kan lämna tillbaka är kortdagsnamnet. Till exempel Tue
eller Wed
(istället för Tuesday
eller Wednesday
).
Formatspecifikationen "Short Day Name" (%a
)
Nyckeln till att returnera kortdagens namn när du använder DATE_FORMAT()
funktionen är att använda den tillämpliga formatspecifikationen.
I MariaDB är formatspecifikationen för kortdagsnamnet:%a
Exempel
Här är ett exempel att visa:
SELECT DATE_FORMAT('2023-07-25', '%a');
Resultat:
+---------------------------------+ | DATE_FORMAT('2023-07-25', '%a') | +---------------------------------+ | Tue | +---------------------------------+
Här är ett annat exempel som går igenom de olika dagarna i veckan:
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 returnera andra datum- och tidsenheter också, men den här artikeln handlar specifikt om att returnera kortdagens namn. Se MariaDB Format Strings för en lista över formatspecifikationer som kan användas med DATE_FORMAT()
.
Andra tillvägagångssätt
Det finns andra sätt att få det korta dagsnamnet från ett datum som innebär att man hugger av den första delen av dagen.
Detta kan dock vara mer benäget för fel än metoden ovan (plus att den är mer invecklad). Du kan få oväntade resultat när du använder den här metoden, särskilt när du arbetar med olika språk.
Här är några exempel för att visa vad jag menar.
Istället för att använda %a
formatspecifikator som vi gjorde i föregående exempel, kan vi använda %W
formatspecifikation för att returnera hela dagen namn, returnera sedan förkorta resultatet med en funktion som LEFT()
.
Exempel:
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 kan alternativt använda en funktion som CAST()
för att konvertera till en datatyp med endast tre tecken, till exempel detta:
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 | +---------+-------+
Detta fungerar bra när du arbetar med det engelska språket (och kanske några andra språk). Men låt oss se vad som händer när vi byter till ett annat språk – säg japanska:
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 det här fallet är det ingen skillnad.
Däremot är det här vad som händer när vi använder %a
formatspecifikation för att returnera kortdagsnamnet:
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å jag rekommenderar att du använder %a
formatspecifikation när det är möjligt.