No MariaDB,
STR_TO_DATE()
é uma função de data e hora integrada que retorna um valor de data e hora, com base na string de data e na string de formato fornecidas. O
STR_TO_DATE()
função é o inverso do DATE_FORMAT()
função. Sintaxe
A sintaxe fica assim:
STR_TO_DATE(str,format)
Onde
str
é a string de data e format
é uma string de formato que especifica o formato da string de data. Exemplo
Aqui está um exemplo:
SELECT STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y');
Resultado:
+------------------------------------------------------+ | STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y') | +------------------------------------------------------+ | 2021-05-24 | +------------------------------------------------------+
A string de formato consiste em vários especificadores de formato que informam ao MariaDB como a data no primeiro argumento é formatada. Consulte Strings de formato MariaDB para obter uma lista de especificadores de formato que podem ser usados em uma string de formato.
Neste exemplo, o resultado é um valor de data, porque a string de formato contém apenas as partes da data.
Retorne um valor de data e hora
Aqui está um exemplo que retorna um valor de data e hora:
SELECT STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S');
Resultado:
+---------------------------------------------------+ | STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S') | +---------------------------------------------------+ | 2021-05-24 00:00:00 | +---------------------------------------------------+
Neste exemplo, a parte de tempo foi adicionada, embora o primeiro argumento não contenha parte de tempo.
Aqui está outro exemplo que inclui uma parte de tempo no primeiro argumento:
SELECT
STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y');
Resultado:
+------------------------------------------------------------------+ | STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y') | +------------------------------------------------------------------+ | 2021-05-24 10:30:45 | +------------------------------------------------------------------+
Aqui está outro, onde a string de data usa um valor de tempo mais flexível:
SELECT
STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y');
Resultado:
+----------------------------------------------------------------+ | STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y') | +----------------------------------------------------------------+ | 2021-05-24 10:30:00 | +----------------------------------------------------------------+
Retornar um valor de tempo
Aqui, alteramos a string de formato para retornar apenas o valor de tempo:
SELECT STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S');
Resultado:
+-----------------------------------------------------+ | STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S') | +-----------------------------------------------------+ | 10:30:45 | +-----------------------------------------------------+
String de data/hora ilegal
Passar uma string de data ilegal retorna
null
com um aviso. Exemplo:
SELECT STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y');
Resultado:
+-------------------------------------------------------+ | STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y') | +-------------------------------------------------------+ | NULL | +-------------------------------------------------------+ 1 row in set, 1 warning (0.009 sec)
Vejamos o aviso:
SHOW WARNINGS;
Resultado:
+---------+------+----------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------------------------------------+ | Warning | 1411 | Incorrect datetime value: 'Humpday, May 26, 2021' for function str_to_date | +---------+------+----------------------------------------------------------------------------+
Argumento ausente
Chamando
STR_TO_DATE()
com o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:SELECT STR_TO_DATE();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'
E outro exemplo:
SELECT STR_TO_DATE('Friday, 28 May 2021');
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'