MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como STR_TO_DATE() funciona no MariaDB


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'