sql >> Database >  >> RDS >> MariaDB

Hoe de korte maandnaam van een datum in MariaDB te krijgen?

In MariaDB kunt u de DATE_FORMAT() . gebruiken functie om verschillende datumdelen van een datum te retourneren. Een van de dingen die u kunt retourneren, is de korte naam van de maand. Bijvoorbeeld Nov of Dec (in plaats van November of December ).

De formaatspecificatie "Naam korte maand" (%b )

De sleutel tot het retourneren van de korte maandnaam bij gebruik van de DATE_FORMAT() functie is om de toepasselijke formaatspecificatie te gebruiken.

In MariaDB is de formaatspecificatie voor de korte maandnaam:%b

Voorbeeld

Hier is een voorbeeld om te demonstreren:

SELECT DATE_FORMAT('2023-12-25', '%b');

Resultaat:

+---------------------------------+
| DATE_FORMAT('2023-12-25', '%b') |
+---------------------------------+
| Dec                             |
+---------------------------------+

Hier is nog een voorbeeld dat door de verschillende maanden van het jaar loopt:

SELECT 
    DATE_FORMAT('2023-01-25', '%b') AS "1",
    DATE_FORMAT('2023-02-25', '%b') AS "2",
    DATE_FORMAT('2023-03-25', '%b') AS "3",
    DATE_FORMAT('2023-04-25', '%b') AS "4",
    DATE_FORMAT('2023-05-25', '%b') AS "5",
    DATE_FORMAT('2023-06-25', '%b') AS "6",
    DATE_FORMAT('2023-07-25', '%b') AS "7",
    DATE_FORMAT('2023-08-25', '%b') AS "8",
    DATE_FORMAT('2023-09-25', '%b') AS "9",
    DATE_FORMAT('2023-10-25', '%b') AS "10",
    DATE_FORMAT('2023-11-25', '%b') AS "11",
    DATE_FORMAT('2023-12-25', '%b') AS "12";

Resultaat (met verticale uitvoer):

 1: Jan
 2: Feb
 3: Mar
 4: Apr
 5: May
 6: Jun
 7: Jul
 8: Aug
 9: Sep
10: Oct
11: Nov
12: Dec

U kunt ook andere datum- en tijdseenheden retourneren, maar dit artikel gaat specifiek over het retourneren van de korte maandnaam. Zie MariaDB Format Strings voor een lijst met formaatspecificaties die kunnen worden gebruikt met DATE_FORMAT() .

Andere benaderingen

Er zijn andere manieren om de naam van de korte maand te krijgen van een datum waarbij het eerste deel van de maand wordt afgesneden.

Dit kan echter meer foutgevoelig zijn dan de bovenstaande methode (plus het is ingewikkelder). U kunt onverwachte resultaten krijgen als u deze methode gebruikt, vooral als u met verschillende talen werkt.

Hier zijn enkele voorbeelden om te laten zien wat ik bedoel.

In plaats van de %b formaatspecificatie zoals we deden in het vorige voorbeeld, we zouden de %M . kunnen gebruiken formaatspecificatie om de naam van de volledige maand te retourneren, en retourneer dat resultaat in te korten met een functie zoals LEFT() .

Voorbeeld:

SELECT 
    DATE_FORMAT('2023-10-25', '%M') AS Full,
    LEFT(DATE_FORMAT('2023-10-25', '%M'), 3) AS Short;

Resultaat:

+---------+-------+
| Full    | Short |
+---------+-------+
| October | Oct   |
+---------+-------+

We kunnen ook een functie gebruiken zoals CAST() om te converteren naar een gegevenstype met slechts drie tekens, zoals dit:

SELECT 
    DATE_FORMAT('2023-10-25', '%M') AS Full,
    CAST(DATE_FORMAT('2023-10-25', '%M') AS CHAR(3)) AS Short;

Resultaat:

+---------+-------+
| Full    | Short |
+---------+-------+
| October | Oct   |
+---------+-------+

Dit werkt prima bij het werken met de Engelse taal (en misschien enkele andere talen). Maar laten we eens kijken wat er gebeurt als we overschakelen naar een andere taal, bijvoorbeeld Thais:

SELECT 
    DATE_FORMAT('2023-10-25', '%M', 'th_TH') AS Full,
    LEFT(DATE_FORMAT('2023-10-25', '%M', 'th_TH'), 3) AS Short;

Resultaat:

+--------------------+-----------+
| Full               | Short     |
+--------------------+-----------+
| ตุลาคม              | ตุล        |
+--------------------+-----------+

Dit is echter wat er gebeurt als we de %b . gebruiken formaatspecificatie om de korte naam van de maand te retourneren:

SELECT 
    DATE_FORMAT('2023-10-25', '%M', 'th_TH') AS Full,
    DATE_FORMAT('2023-10-25', '%b', 'th_TH') AS Short;

Resultaat:

+--------------------+----------+
| Full               | Short    |
+--------------------+----------+
| ตุลาคม              | ต.ค.     |
+--------------------+----------+

Het geeft een ander resultaat.

Dus ik raad aan om de %b . te gebruiken formaatspecificatie waar mogelijk.


  1. Hoe gebruik je opsommingen in Oracle?

  2. Wat doet DELIMITER // in een trigger?

  3. Wanneer wordt SQLiteOpenHelper onCreate() / onUpgrade() uitgevoerd?

  4. Verbinding met MySQL-server verbroken bij 'initieel communicatiepakket lezen', systeemfout:0