sql >> Databáze >  >> RDS >> Mysql

Jak získat čas z řetězce v MySQL

Problém:

Chcete extrahovat čas z hodnoty řetězce v MySQL.

Příklad:

Máte hodnotu řetězce, která vypadá takto:

‘Wednesday, 10 February 2021, 12:30:20’

Chcete extrahovat pouze časovou část „12:30:20“.

Řešení:

Zde je dotaz:

SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");

Diskuse:

Abychom tento proces jasněji ilustrovali, vysvětlíme jej ve dvou částech.

Nejprve musíme převést řetězec na hodnotu data. K tomu používáme STR_TO_DATE funkce. Dotaz by měl vypadat takto:

SELECT STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T”);

Účel STR_TO_DATE funkcí je převést textový řetězec do formátu data a času. Syntaxe této funkce je následující:

STR_TO_DATE(string, format);

Prvním argumentem této funkce je řetězec, který chceme převést. Druhý argument určuje formát řetězce. V našem případě používáme následující parametry:

  • %W:Název dne v týdnu od neděle do soboty.
  • %d:Den v měsíci jako číselná hodnota od 01 do 31.
  • %m:Měsíc jako číselná hodnota od 01 do 12.
  • %Y:Rok jako čtyřmístná číselná hodnota (yyyy).
  • %T:Čas ve 24hodinovém formátu (hh:mm:ss).

Další parametry naleznete v oficiální dokumentaci pro MySQL.

Výsledek tohoto dotazu by měl vypadat takto:

2021-02-10 12:30:20

Nyní máme hodnotu v datovém typu DATETIME. Abychom extrahovali pouze čas, musíme přidat DATE_FORMAT funkce na dotaz výše.

Obecná syntaxe DATE_FORMAT funkce je:

DATE_FORMAT(date, format)

Náš dotaz by pak měl vypadat takto:

SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");

V našem příkladu je prvním argumentem DATE_FORMAT funkce je datum vyplývající z STR_TO_DATE funkce. Druhým argumentem je formát, který funguje stejně jako v STR_TO_DATE funkce. Protože zde potřebujeme pouze čas, zadáme "%T " jako druhý argument.

Znak % je povinný před znaky specifikátoru formátu. Formát musíme zadat přesně ve stejném pořadí, včetně všech interpunkčních znamének.

Výsledek dotazu, který vidíme níže, je očekávaným výsledkem.

12:30:20

Pomocí kombinace těchto dvou funkcí můžete z textového řetězce extrahovat všechny možné kombinace data a času.


  1. 3 způsoby, jak „Unhex“ řetězec v MySQL

  2. Problémy s nastavením vlastního primárního klíče při migraci na Rails 4

  3. Jak získat první záznam v každé skupině v MySQL

  4. Jak mohu napsat SQL pro tabulku, která sdílí stejný název jako chráněné klíčové slovo v MySql?