sql >> Databasteknik >  >> RDS >> MariaDB

Hur man får kortdagens namn från ett datum i MariaDB

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.


  1. Eliminera MySQL Split-Brain i multimolndatabaser

  2. Endast ett uttryck kan anges i urvalslistan när underfrågan inte introduceras med EXISTS

  3. SQLT och partitionering

  4. Hur man hittar långsammaste frågor