sql >> Database teknologi >  >> RDS >> MariaDB

Sådan får du kortdagens navn fra en dato i MariaDB

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.


  1. Tilslutning af Genero til SQL Server

  2. Sammenlign strenge, der ignorerer accenter i SQL (ORACLE)

  3. SQL Server v.Next:STRING_AGG() ydeevne

  4. Dynamisk SQL vs Stored Procedure