В MariaDB, STR_TO_DATE() е вградена функция за дата и час, която връща стойност за дата и час въз основа на дадения низ за дата и низ за формат.
STR_TO_DATE() функцията е обратна на DATE_FORMAT() функция.
Синтаксис
Синтаксисът е така:
STR_TO_DATE(str,format)
Където str е низът за дата и format е низ за формат, който определя формата на низа за дата.
Пример
Ето един пример:
SELECT STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y'); Резултат:
+------------------------------------------------------+
| STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y') |
+------------------------------------------------------+
| 2021-05-24 |
+------------------------------------------------------+ Форматният низ се състои от редица спецификатори на формат, които казват на MariaDB как е форматирана датата в първия аргумент. Вижте MariaDB Format Strings за списък с спецификатори на формат, които могат да се използват във форматен низ.
В този пример резултатът е стойност за дата, тъй като форматиращият низ съдържа само частите за дата.
Връщане на стойност за дата и час
Ето пример, който връща стойност за дата и час:
SELECT STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S'); Резултат:
+---------------------------------------------------+
| STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S') |
+---------------------------------------------------+
| 2021-05-24 00:00:00 |
+---------------------------------------------------+ В този пример частта за време беше добавена, въпреки че първият аргумент не съдържаше времева част.
Ето още един пример, който включва времева част в първия аргумент:
SELECT
STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y'); Резултат:
+------------------------------------------------------------------+
| STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y') |
+------------------------------------------------------------------+
| 2021-05-24 10:30:45 |
+------------------------------------------------------------------+ Ето още един, където низът за дата използва по-свободна стойност на времето:
SELECT
STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y'); Резултат:
+----------------------------------------------------------------+
| STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y') |
+----------------------------------------------------------------+
| 2021-05-24 10:30:00 |
+----------------------------------------------------------------+ Върнете времева стойност
Тук променяме форматиращия низ, за да върне само стойността на времето:
SELECT STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S'); Резултат:
+-----------------------------------------------------+
| STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S') |
+-----------------------------------------------------+
| 10:30:45 |
+-----------------------------------------------------+ Незаконен низ за дата/час
Предаването на незаконен низ за дата връща null с предупреждение.
Пример:
SELECT STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y'); Резултат:
+-------------------------------------------------------+
| STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y') |
+-------------------------------------------------------+
| NULL |
+-------------------------------------------------------+
1 row in set, 1 warning (0.009 sec) Нека разгледаме предупреждението:
SHOW WARNINGS; Резултат:
+---------+------+----------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------------------------------------+ | Warning | 1411 | Incorrect datetime value: 'Humpday, May 26, 2021' for function str_to_date | +---------+------+----------------------------------------------------------------------------+
Липсващ аргумент
Извикване на STR_TO_DATE() с грешен брой аргументи или без подаване на аргументи, води до грешка:
SELECT STR_TO_DATE(); Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'
И още един пример:
SELECT STR_TO_DATE('Friday, 28 May 2021'); Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'