Mysql
 sql >> Database >  >> RDS >> Mysql

Come ottenere il tempo da una stringa in MySQL

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.