De MySQL STR_TO_DATE()
functie stelt u in staat om een datumwaarde op te bouwen uit de verschillende datumdelen.
Wanneer u deze functie gebruikt, geeft u een reeks van de verschillende datumdelen op en een tweede argument dat het formaat specificeert waarin de datum wordt geleverd.
Syntaxis
De syntaxis gaat als volgt:
STR_TO_DATE(str,format)
Waar str
is de string die de datumdelen bevat, en format is de format string (bepaalt hoe de str
argument is opgemaakt).
Voorbeeld 1 – Basisgebruik
Hier is een voorbeeld om te demonstreren.
SELECT STR_TO_DATE('31,12,1999','%d,%m,%Y');
Resultaat:
+--------------------------------------+ | STR_TO_DATE('31,12,1999','%d,%m,%Y') | +--------------------------------------+ | 1999-12-31 | +--------------------------------------+
Voorbeeld 2 – Volgorde van de opmaakstring
De opmaakreeks moet overeenkomen met de waarden in de datumreeks. U kunt bijvoorbeeld het volgende niet doen:
SELECT STR_TO_DATE('31,12,1999','%m,%d,%Y');
Resultaat:
+--------------------------------------+ | STR_TO_DATE('31,12,1999','%m,%d,%Y') | +--------------------------------------+ | NULL | +--------------------------------------+
De reden dat dit niet werkte, is omdat we proberen de maand een waarde van 31 te geven, maar er zijn maar 12 maanden in een jaar. Dit zou dus resulteren in een ongeldige datumwaarde.
Daarom moet u voorzichtig zijn bij het gebruik van deze functie, vooral wanneer de dagwaarde 12 of minder is, anders zou u kunnen eindigen met het verwisselen van de maand- en dagwaarden zonder dat u het merkt.
Bijvoorbeeld als volgt:
SELECT STR_TO_DATE('07,12,1999','%d,%m,%Y'), STR_TO_DATE('07,12,1999','%m,%d,%Y');
Resultaat:
+--------------------------------------+--------------------------------------+ | STR_TO_DATE('07,12,1999','%d,%m,%Y') | STR_TO_DATE('07,12,1999','%m,%d,%Y') | +--------------------------------------+--------------------------------------+ | 1999-12-07 | 1999-07-12 | +--------------------------------------+--------------------------------------+
In dit geval krijgen we geen NULL-waarde zoals in het vorige voorbeeld, omdat beide 07
en 12
kan een dag of een maand zijn.
Voorbeeld 3 – Overeenkomen met de opmaakstring
Zelfs als de opmaakreeks in de juiste volgorde staat, moet deze ook overeenkomen met de opmaak van de datumgedeelten die in het eerste argument zijn opgegeven.
U kunt dit bijvoorbeeld niet doen:
SELECT STR_TO_DATE('31 Dec, 1999','%d,%m,%Y');
Resultaat:
+----------------------------------------+ | STR_TO_DATE('31 Dec, 1999','%d,%m,%Y') | +----------------------------------------+ | NULL | +----------------------------------------+
In dit geval zouden we zoiets als dit moeten doen:
SELECT STR_TO_DATE('31 Dec, 1999','%d %M, %Y');
Resultaat:
+-----------------------------------------+ | STR_TO_DATE('31 Dec, 1999','%d %M, %Y') | +-----------------------------------------+ | 1999-12-31 | +-----------------------------------------+
Voorbeeld 4 – De functie GET_FORMAT() gebruiken
U kunt ook de GET_FORMAT()
. doorgeven functioneren als het tweede argument.
Hier is een voorbeeld.
SELECT STR_TO_DATE('12.07.1999', GET_FORMAT(DATE, 'USA'));
Resultaat:
+----------------------------------------------------+ | STR_TO_DATE('12.07.1999', GET_FORMAT(DATE, 'USA')) | +----------------------------------------------------+ | 1999-12-07 | +----------------------------------------------------+
Voorbeeld 5 – Datum/tijd-waarden
Je kunt deze functie ook gebruiken om een tijd- of datetime-waarde te retourneren.
Hier is een voorbeeld met een datetime-waarde.
SELECT STR_TO_DATE('31/12/1999 09:30:17','%d/%m/%Y %H:%i:%s');
Resultaat:
+--------------------------------------------------------+ | STR_TO_DATE('31/12/1999 09:30:17','%d/%m/%Y %H:%i:%s') | +--------------------------------------------------------+ | 1999-12-31 09:30:17 | +--------------------------------------------------------+
Opmaak tekenreeksspecificaties
De volgende specificaties kunnen worden gebruikt in de opmaakreeks. Naast deze kunt u ook letterlijke tekenreeksen gebruiken in de opmaakreeks.
Beschrijving | Beschrijving |
---|---|
%a | Afgekorte naam van de weekdag (Sun ..Sat ) |
%b | Afgekorte maandnaam (Jan ..Dec ) |
%c | Maand, numeriek (0 ..12 ) |
%D | Dag van de maand met Engels achtervoegsel (0th , 1st , 2nd , 3rd , …) |
%d | Dag van de maand, numeriek (00 ..31 ) |
%e | Dag van de maand, numeriek (0 ..31 ) |
%f | Microseconden (000000 ..999999 ) |
%H | Uur (00 ..23 ) |
%h | Uur (01 ..12 ) |
%I | Uur (01 ..12 ) |
%i | Minuten, numeriek (00 ..59 ) |
%j | Dag van het jaar (001 ..366 ) |
%k | Uur (0 ..23 ) |
%l | Uur (1 ..12 ) |
%M | Maandnaam (January ..December ) |
%m | Maand, numeriek (00 ..12 ) |
%p | AM of PM |
%r | Tijd, 12 uur (hh:mm:ss gevolgd door AM of PM ) |
%S | Seconden (00 ..59 ) |
%s | Seconden (00 ..59 ) |
%T | Tijd, 24 uur (hh:mm:ss ) |
%U | Week (00 ..53 ), waarbij zondag de eerste dag van de week is; WEEK() modus 0 |
%u | Week (00 ..53 ), waarbij maandag de eerste dag van de week is; WEEK() modus 1 |
%V | Week (01 ..53 ), waarbij zondag de eerste dag van de week is; WEEK() modus 2; gebruikt met %X |
%v | Week (01 ..53 ), waarbij maandag de eerste dag van de week is; WEEK() modus 3; gebruikt met %x |
%W | Naam weekdag (Sunday ..Saturday ) |
%w | Dag van de week (0 =Zondag..6 =zaterdag) |
%X | Jaar voor de week waarin zondag de eerste dag van de week is, numeriek, vier cijfers; gebruikt met %V |
%x | Jaar voor de week, waarbij maandag de eerste dag van de week is, numeriek, vier cijfers; gebruikt met %v |
%Y | Jaar, numeriek, vier cijfers |
%y | Jaar, numeriek (twee cijfers) |
%% | Een letterlijke % karakter |
% | x , voor elke “x ” niet hierboven vermeld |