Problem:
Chcesz wyodrębnić czas z wartości ciągu w MySQL.
Przykład:
Masz ciąg znaków, który wygląda tak:
‘Wednesday, 10 February 2021, 12:30:20’
Chcesz wyodrębnić tylko część czasu, „12:30:20”.
Rozwiązanie:
Oto zapytanie:
SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");
Dyskusja:
Aby dokładniej zilustrować ten proces, wyjaśnimy to w dwóch częściach.
Najpierw musimy przekonwertować ciąg na wartość daty. Aby to zrobić, używamy STR_TO_DATE
funkcjonować. Zapytanie powinno wyglądać tak:
SELECT STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T”);
Cel STR_TO_DATE
Funkcja polega na konwersji ciągu tekstowego na format daty i godziny. Składnia tej funkcji jest następująca:
STR_TO_DATE(string, format);
Pierwszym argumentem tej funkcji jest ciąg, który chcemy przekonwertować. Drugi argument określa format ciągu. W naszym przypadku używamy następujących parametrów:
- %W:Nazwa dnia tygodnia od niedzieli do soboty.
- %d:dzień miesiąca jako wartość liczbowa od 01 do 31.
- %m:Miesiąc jako wartość liczbowa od 01 do 12.
- %Y:Rok jako 4-cyfrowa wartość liczbowa (rrrr).
- %T:Czas w formacie 24-godzinnym (gg:mm:ss).
Więcej parametrów znajdziesz w oficjalnej dokumentacji MySQL.
Wynik tego zapytania powinien wyglądać tak:
2021-02-10 12:30:20
Teraz mamy wartość w typie danych DATETIME. Aby wyodrębnić tylko czas, musimy dodać DATE_FORMAT
funkcji do powyższego zapytania.
Ogólna składnia DATE_FORMAT
funkcja to:
DATE_FORMAT(date, format)
Wtedy nasze zapytanie powinno wyglądać tak:
SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");
W naszym przykładzie pierwszy argument DATE_FORMAT
funkcją jest data wynikająca z STR_TO_DATE
funkcjonować. Drugim argumentem jest format, który działa w taki sam sposób, jak w STR_TO_DATE
funkcjonować. Ponieważ potrzebujemy tutaj tylko czasu, określamy „%T
" jako drugi argument.
Znak % jest obowiązkowy przed znakami specyfikatora formatu. Musimy określić format w dokładnie tej samej kolejności, łącznie ze wszystkimi znakami interpunkcyjnymi.
Wynik zapytania, który widzimy poniżej, jest oczekiwanym wynikiem.
12:30:20
Używając kombinacji tych dwóch funkcji, możesz wyodrębnić każdą możliwą kombinację daty i czasu z ciągu tekstowego.