V MariaDB, STR_TO_DATE() je vestavěná funkce data a času, která vrací hodnotu datetime na základě daného řetězce data a formátovacího řetězce.
STR_TO_DATE() funkce je inverzní k DATE_FORMAT() funkce.
Syntaxe
Syntaxe vypadá takto:
STR_TO_DATE(str,format)
Kde str je řetězec data a format je formátovací řetězec, který určuje formát řetězce data.
Příklad
Zde je příklad:
SELECT STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y'); Výsledek:
+------------------------------------------------------+
| STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y') |
+------------------------------------------------------+
| 2021-05-24 |
+------------------------------------------------------+ Formátovací řetězec se skládá z řady specifikátorů formátu, které MariaDB říkají, jak je formátováno datum v prvním argumentu. Viz MariaDB Format Strings pro seznam specifikátorů formátu, které lze použít ve formátovacím řetězci.
V tomto příkladu je výsledkem hodnota data, protože formátovací řetězec obsahuje pouze části data.
Vrátí hodnotu Datetime
Zde je příklad, který vrací hodnotu datetime:
SELECT STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S'); Výsledek:
+---------------------------------------------------+
| STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S') |
+---------------------------------------------------+
| 2021-05-24 00:00:00 |
+---------------------------------------------------+ V tomto příkladu byla přidána časová část, i když první argument neobsahoval žádnou časovou část.
Zde je další příklad, který zahrnuje časovou část v prvním argumentu:
SELECT
STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y'); Výsledek:
+------------------------------------------------------------------+
| STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y') |
+------------------------------------------------------------------+
| 2021-05-24 10:30:45 |
+------------------------------------------------------------------+ Zde je další, kde řetězec data používá volnější časovou hodnotu:
SELECT
STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y'); Výsledek:
+----------------------------------------------------------------+
| STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y') |
+----------------------------------------------------------------+
| 2021-05-24 10:30:00 |
+----------------------------------------------------------------+ Vrátit časovou hodnotu
Zde změníme formátovací řetězec tak, aby vrátil pouze časovou hodnotu:
SELECT STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S'); Výsledek:
+-----------------------------------------------------+
| STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S') |
+-----------------------------------------------------+
| 10:30:45 |
+-----------------------------------------------------+ Neplatný řetězec data/času
Předání neplatného řetězce data vrátí null s varováním.
Příklad:
SELECT STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y'); Výsledek:
+-------------------------------------------------------+
| STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y') |
+-------------------------------------------------------+
| NULL |
+-------------------------------------------------------+
1 row in set, 1 warning (0.009 sec) Podívejme se na varování:
SHOW WARNINGS; Výsledek:
+---------+------+----------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------------------------------------+ | Warning | 1411 | Incorrect datetime value: 'Humpday, May 26, 2021' for function str_to_date | +---------+------+----------------------------------------------------------------------------+
Chybí argument
Volání STR_TO_DATE() s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů vede k chybě:
SELECT STR_TO_DATE(); Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'
A další příklad:
SELECT STR_TO_DATE('Friday, 28 May 2021'); Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'