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.