Problema:
Vuoi estrarre l'ora da un valore stringa in MySQL.
Esempio:
Hai un valore di stringa simile a questo:
‘Wednesday, 10 February 2021, 12:30:20’
Vuoi estrarre solo la parte temporale, "12:30:20".
Soluzione:
Ecco la domanda:
SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");
Discussione:
Per illustrare più chiaramente il processo, lo spiegheremo in due parti.
Innanzitutto, dobbiamo convertire la stringa in un valore di data. Per fare ciò, utilizziamo il STR_TO_DATE
funzione. La query dovrebbe essere simile a questa:
SELECT STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T”);
Lo scopo del STR_TO_DATE
la funzione è convertire una stringa di testo in un formato datetime. La sintassi per questa funzione è la seguente:
STR_TO_DATE(string, format);
Il primo argomento di questa funzione è la stringa che vogliamo convertire. Il secondo argomento specifica il formato della stringa. Nel nostro caso, utilizziamo i seguenti parametri:
- %W:nome del giorno della settimana da domenica a sabato.
- %d:giorno del mese come valore numerico compreso tra 01 e 31.
- %m:mese come valore numerico da 01 a 12.
- %Y:Anno come valore numerico a 4 cifre (aaaa).
- %T:Ora nel formato 24 ore (hh:mm:ss).
Puoi trovare più parametri nella documentazione ufficiale per MySQL.
Il risultato di questa query dovrebbe essere simile al seguente:
2021-02-10 12:30:20
Ora abbiamo il valore nel tipo di dati DATETIME. Per estrarre solo l'ora, dobbiamo aggiungere il DATE_FORMAT
funzione alla query precedente.
La sintassi generale di DATE_FORMAT
la funzione è:
DATE_FORMAT(date, format)
Quindi la nostra query dovrebbe essere simile a questa:
SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");
Nel nostro esempio, il primo argomento di DATE_FORMAT
funzione è la data risultante da STR_TO_DATE
funzione. Il secondo argomento è il formato, che funziona allo stesso modo di STR_TO_DATE
funzione. Poiché qui abbiamo solo bisogno di tempo, specifichiamo "%T
" come secondo argomento.
Il carattere % è obbligatorio prima dei caratteri dell'identificatore di formato. Dobbiamo specificare il formato esattamente nello stesso ordine, inclusi tutti i segni di punteggiatura.
Il risultato della query che vediamo di seguito è il risultato atteso.
12:30:20
Utilizzando una combinazione di queste due funzioni, puoi estrarre ogni possibile combinazione di data e ora da una stringa di testo.