Probleem:
U wilt de tijd extraheren uit een tekenreekswaarde in MySQL.
Voorbeeld:
Je hebt een tekenreekswaarde die er als volgt uitziet:
‘Wednesday, 10 February 2021, 12:30:20’
U wilt alleen het tijdsdeel '12:30:20' extraheren.
Oplossing:
Dit is de vraag:
SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");
Discussie:
Om het proces duidelijker te illustreren, zullen we dit in twee delen uitleggen.
Eerst moeten we de string converteren naar een datumwaarde. Om dit te doen, gebruiken we de STR_TO_DATE
functie. De zoekopdracht zou er als volgt uit moeten zien:
SELECT STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T”);
Het doel van de STR_TO_DATE
functie is om een tekstreeks om te zetten in een datetime-formaat. De syntaxis voor deze functie is als volgt:
STR_TO_DATE(string, format);
Het eerste argument van deze functie is de string die we willen converteren. Het tweede argument specificeert het formaat van de string. In ons geval gebruiken we de volgende parameters:
- %W:naam van de weekdag van zondag tot zaterdag.
- %d:Dag van de maand als een numerieke waarde van 01 tot 31.
- %m:maand als een numerieke waarde van 01 tot 12.
- %Y:Jaar als een 4-cijferige numerieke waarde (yyyy).
- %T:Tijd in 24-uurs formaat (uu:mm:ss).
U kunt meer parameters vinden in de officiële documentatie voor MySQL.
Het resultaat van deze zoekopdracht zou er als volgt uit moeten zien:
2021-02-10 12:30:20
Nu hebben we de waarde in het gegevenstype DATETIME. Om alleen de tijd te extraheren, moeten we de DATE_FORMAT
. toevoegen functie voor de bovenstaande vraag.
De algemene syntaxis van de DATE_FORMAT
functie is:
DATE_FORMAT(date, format)
Dan zou onze vraag er als volgt uit moeten zien:
SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");
In ons voorbeeld is het eerste argument van de DATE_FORMAT
functie is de datum die resulteert uit de STR_TO_DATE
functie. Het tweede argument is het formaat, dat op dezelfde manier werkt als in de STR_TO_DATE
functie. Omdat we hier alleen de tijd nodig hebben, specificeren we "%T
" als het tweede argument.
Het %-teken is verplicht vóór de opmaakspecificatietekens. We moeten het formaat in exact dezelfde volgorde specificeren, inclusief alle leestekens.
Het zoekresultaat dat we hieronder zien, is het verwachte resultaat.
12:30:20
Door een combinatie van deze twee functies te gebruiken, kun je elke mogelijke combinatie van datum en tijd uit een tekstreeks halen.