sql >> Databasteknik >  >> RDS >> MariaDB

3 sätt att få dagnamnet från ett datum i MariaDB

Nedan finns tre metoder du kan använda för att få dagens namn från ett datum i MariaDB.

Två av dessa tillvägagångssätt returnerar hela dagen namn, och en returnerar kort dag namnet.

DAYNAME() Funktion

DAYNAME() Funktionen är utformad speciellt för att returnera dagens namn från ett datum. Passa bara på datumet när du anropar funktionen, så returnerar den hela dagens namn.

Exempel:

SELECT DAYNAME('2021-08-19');

Resultat:

+-----------------------+
| DAYNAME('2021-08-19') |
+-----------------------+
| Thursday              |
+-----------------------+

Språket som används för dagens namn styrs av värdet på lc_time_names systemvariabel. Se DAYNAME() för ett exempel på hur detta påverkar utdata.

DATE_FORMAT() Funktion

DATE_FORMAT() funktion formaterar ett givet datum till ett specificerat format. Du anger datum och format när du anropar funktionen.

Du kan returnera hela veckodagsnamnet genom att skicka %W som formatsträng.

Exempel:

SELECT DATE_FORMAT('2021-08-19', '%W');

Resultat:

+---------------------------------+
| DATE_FORMAT('2021-08-19', '%W') |
+---------------------------------+
| Thursday                        |
+---------------------------------+

Som med DAYNAME() , språket som används för dagens namn styrs av värdet på lc_time_names systemvariabel. Men DATE_FORMAT() funktion accepterar ett valfritt tredje argument som låter dig ange lokalen.

Här är ett exempel på hur du anger en plats:

SELECT DATE_FORMAT('2021-08-19', '%W', 'ca_ES');

Resultat:

+------------------------------------------+
| DATE_FORMAT('2021-08-19', '%W', 'ca_ES') |
+------------------------------------------+
| dijous                                   |
+------------------------------------------+

Short Day Name

Skickar %a till DATE_FORMAT() funktion returnerar det korta veckodagsnamnet.

Exempel:

SELECT DATE_FORMAT('2021-08-19', '%a');

Resultat:

+---------------------------------+
| DATE_FORMAT('2021-08-19', '%a') |
+---------------------------------+
| Thu                             |
+---------------------------------+

Detta kan replikeras med DAYNAME() funktion genom att använda LEFT() för att ta de första 3 tecknen från veckodagsnamnet.

Exempel:

SELECT LEFT(DAYNAME('2021-08-19'), 3);

Resultat:

+--------------------------------+
| LEFT(DAYNAME('2021-08-19'), 3) |
+--------------------------------+
| Thu                            |
+--------------------------------+

Samma effekt kan också uppnås genom att använda en funktion som CAST() för att konvertera resultatet till en datatyp med tre tecken.

Men även om detta tillvägagångssätt fungerar i en_US , det kanske inte alltid fungerar på andra språk. Till exempel:

SET lc_time_names = 'th_TH';
SELECT 
    DATE_FORMAT('2021-08-19', '%a') AS "Short 1",
    LEFT(DAYNAME('2021-08-19'), 3) AS "Short 2",
    DAYNAME('2021-08-19') AS "Full";

Resultat:

+---------+-----------+--------------------------+
| Short 1 | Short 2   | Full                     |
+---------+-----------+--------------------------+
| พฤ.     | พฤห       | พฤหัสบดี                   |
+---------+-----------+--------------------------+

  1. gem installation:Det gick inte att bygga gem native extension (kan inte hitta header-filer)

  2. Hitta liknande strängar med PostgreSQL snabbt

  3. SqlDependency aktiverar inte OnChange-händelsen när datauppsättningen ändras

  4. MySQL lägger till dagar till ett datum