В 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'