MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie STR_TO_DATE() in MariaDB funktioniert

In MariaDB STR_TO_DATE() ist eine eingebaute Datums- und Uhrzeitfunktion, die einen datetime-Wert basierend auf der angegebenen Datumszeichenfolge und Formatzeichenfolge zurückgibt.

Das STR_TO_DATE() Funktion ist die Umkehrung von DATE_FORMAT() Funktion.

Syntax

Die Syntax lautet wie folgt:

STR_TO_DATE(str,format) 

Wobei str ist die Datumszeichenfolge und format ist eine Formatzeichenfolge, die das Format der Datumszeichenfolge angibt.

Beispiel

Hier ist ein Beispiel:

SELECT STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y'); 

Ergebnis:

+---------------------------------------------- --------+| STR_TO_DATE('Montag, 24. Mai 2021', '%W, %M %e, %Y') |+------------------------ ------------------------------+| 2021-05-24 |+-------------------------------------------------- -----------+

Die Formatzeichenfolge besteht aus einer Reihe von Formatbezeichnern, die MariaDB mitteilen, wie das Datum im ersten Argument formatiert ist. Siehe MariaDB-Formatzeichenfolgen für eine Liste von Formatbezeichnern, die in einer Formatzeichenfolge verwendet werden können.

In diesem Beispiel ist das Ergebnis ein Datumswert, da der Formatstring nur die Datumsteile enthält.

Gib einen Datetime-Wert zurück

Hier ist ein Beispiel, das einen datetime-Wert zurückgibt:

SELECT STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S'); 

Ergebnis:

+---------------------------------------------- -----+| STR_TO_DATE('24. Mai 2021', '%M %e, %Y %H:%i:%S') |+--------------------- ------------------------------+| 2021-05-24 00:00:00 |+-------------------------------------------------- -------------+

In diesem Beispiel wurde der Zeitteil hinzugefügt, obwohl das erste Argument keinen Zeitteil enthielt.

Hier ist ein weiteres Beispiel, das einen Zeitteil im ersten Argument enthält:

SELECT 
STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y'); 

Ergebnis:

+---------------------------------------------- --------------------+| STR_TO_DATE('10:30:45 am 24. Mai 2021', '%H:%i:%S am %M %e, %Y') |+-------------- -------------------------------------------------- --+| 2021-05-24 10:30:45 |+-------------------------------------------------- ----------------------------+

Hier ist eine andere, bei der die Datumszeichenfolge einen lockereren Zeitwert verwendet:

SELECT 
STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y'); 

Ergebnis:

+---------------------------------------------- ------------------+| STR_TO_DATE('24. Mai 2021 um 22:30 Uhr', '%H.%ipm am %M %e, %Y') |+-------------------- --------------------------------------------+| 2021-05-24 10:30:00 |+-------------------------------------------------- --------------------------+

Gib einen Zeitwert zurück

Hier ändern wir den Formatstring, um nur den Zeitwert zurückzugeben:

SELECT STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S'); 

Ergebnis:

+---------------------------------------------- -------+| STR_TO_DATE('10:30:45 am 24. Mai 2021', '%H:%i:%S') |+--------------------- -------------------------------+| 10:30:45 |+--------------------------------------------------- ----------+

Illegaler Datums-/Uhrzeit-String

Das Übergeben einer ungültigen Datumszeichenfolge gibt null zurück mit einer Warnung.

Beispiel:

SELECT STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y'); 

Ergebnis:

+---------------------------------------------- ---------+| STR_TO_DATE('Humpday, 26. Mai 2021', '%W, %M %e, %Y') |+------------------------ -------------------------------+| NULL |+------------------------------------------------------------ --------+1 Zeile im Satz, 1 Warnung (0,009 Sek.)

Schauen wir uns die Warnung an:

SHOW WARNINGS; 

Ergebnis:

+---------+------+------------------------------------- ----------------------------------+| Ebene | Code | Nachricht |+---------+------+------------------------------ ----------------------------------------------+| Warnung | 1411 | Falscher datetime-Wert:'Humpday, May 26, 2021' für Funktion str_to_date |+---------+------+---------------- -------------------------------------------------- ----------+

Fehlendes Argument

Aufruf von STR_TO_DATE() mit der falschen Anzahl von Argumenten oder ohne Übergabe von Argumenten führt zu einem Fehler:

SELECT STR_TO_DATE(); 

Ergebnis:

FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion 'STR_TO_DATE'

Und noch ein Beispiel:

SELECT STR_TO_DATE('Friday, 28 May 2021'); 

Ergebnis:

FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion 'STR_TO_DATE'