MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona STR_TO_DATE() in MariaDB

In MariaDB, STR_TO_DATE() è una funzione di data e ora incorporata che restituisce un valore datetime, basato sulla stringa di data e sulla stringa di formato specificate.

Il STR_TO_DATE() la funzione è l'inverso di DATE_FORMAT() funzione.

Sintassi

La sintassi è questa:

STR_TO_DATE(str,format)

Dove str è la stringa della data e format è una stringa di formato che specifica il formato della stringa di data.

Esempio

Ecco un esempio:

SELECT STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y');

Risultato:

+------------------------------------------------------+
| STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y') |
+------------------------------------------------------+
| 2021-05-24                                           |
+------------------------------------------------------+

La stringa di formato è costituita da un numero di identificatori di formato che indicano a MariaDB come è formattata la data nel primo argomento. Vedere Stringhe di formato MariaDB per un elenco di identificatori di formato che possono essere utilizzati in una stringa di formato.

In questo esempio, il risultato è un valore di data, perché la stringa di formato contiene solo le parti della data.

Restituisci un valore DateTime

Ecco un esempio che restituisce un valore datetime:

SELECT STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S');

Risultato:

+---------------------------------------------------+
| STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S') |
+---------------------------------------------------+
| 2021-05-24 00:00:00                               |
+---------------------------------------------------+

In questo esempio è stata aggiunta la parte temporale, anche se il primo argomento non conteneva alcuna parte temporale.

Ecco un altro esempio che include una parte temporale nel primo argomento:

SELECT 
STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y');

Risultato:

+------------------------------------------------------------------+
| STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y') |
+------------------------------------------------------------------+
| 2021-05-24 10:30:45                                              |
+------------------------------------------------------------------+

Eccone un altro, in cui la stringa della data utilizza un valore temporale più ampio:

SELECT 
STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y');

Risultato:

+----------------------------------------------------------------+
| STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y') |
+----------------------------------------------------------------+
| 2021-05-24 10:30:00                                            |
+----------------------------------------------------------------+

Restituire un valore temporale

Qui, cambiamo la stringa di formato per restituire solo il valore dell'ora:

SELECT STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S');

Risultato:

+-----------------------------------------------------+
| STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S') |
+-----------------------------------------------------+
| 10:30:45                                            |
+-----------------------------------------------------+

Stringa di data/ora non valida

Il passaggio di una stringa di data illegale restituisce null con un avviso.

Esempio:

SELECT STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y');

Risultato:

+-------------------------------------------------------+
| STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y') |
+-------------------------------------------------------+
| NULL                                                  |
+-------------------------------------------------------+
1 row in set, 1 warning (0.009 sec)

Diamo un'occhiata all'avviso:

SHOW WARNINGS;

Risultato:

+---------+------+----------------------------------------------------------------------------+
| Level   | Code | Message                                                                    |
+---------+------+----------------------------------------------------------------------------+
| Warning | 1411 | Incorrect datetime value: 'Humpday, May 26, 2021' for function str_to_date |
+---------+------+----------------------------------------------------------------------------+

Argomento mancante

Chiamando STR_TO_DATE() con il numero errato di argomenti, o senza passare alcun argomento, genera un errore:

SELECT STR_TO_DATE();

Risultato:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'

E un altro esempio:

SELECT STR_TO_DATE('Friday, 28 May 2021');

Risultato:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'