Проблем:
Искате да извлечете времето от стойност на низ в MySQL.
Пример:
Имате стойност на низ, която изглежда така:
‘Wednesday, 10 February 2021, 12:30:20’
Искате да извлечете само частта от времето, „12:30:20“.
Решение:
Ето заявката:
SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");
Дискусия:
За да илюстрираме процеса по-ясно, ще обясним това в две части.
Първо, трябва да преобразуваме низа в стойност за дата. За да направим това, използваме STR_TO_DATE
функция. Заявката трябва да изглежда така:
SELECT STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T”);
Целта на STR_TO_DATE
функцията е да преобразува текстов низ във формат за дата и час. Синтаксисът на тази функция е както следва:
STR_TO_DATE(string, format);
Първият аргумент на тази функция е низът, който искаме да преобразуваме. Вторият аргумент определя формата на низа. В нашия случай използваме следните параметри:
- %W:Име на делничния ден от неделя до събота.
- %d:Ден от месеца като числова стойност от 01 до 31.
- %m:Месец като числова стойност от 01 до 12.
- %Y:Година като 4-цифрена числова стойност (гггг).
- %T:Време в 24-часов формат (hh:mm:ss).
Можете да намерите повече параметри в официалната документация за MySQL.
Резултатът от тази заявка трябва да изглежда така:
2021-02-10 12:30:20
Сега имаме стойността в типа данни DATETIME. За да извлечем само времето, трябва да добавим DATE_FORMAT
функция към заявката по-горе.
Общият синтаксис на DATE_FORMAT
функцията е:
DATE_FORMAT(date, format)
Тогава нашата заявка трябва да изглежда така:
SELECT DATE_FORMAT(STR_TO_DATE("Wednesday, 10 February 2021, 12:30:20", "%W, %d-%m-%Y, %T"), "%T");
В нашия пример, първият аргумент на DATE_FORMAT
функцията е датата, получена от STR_TO_DATE
функция. Вторият аргумент е форматът, който работи по същия начин, както в STR_TO_DATE
функция. Тъй като тук се нуждаем само от времето, ние задаваме „%T
" като втори аргумент.
Знакът % е задължителен преди знаците на спецификатора на формата. Трябва да посочим формата в абсолютно същия ред, включително всички препинателни знаци.
Резултатът от заявката, който виждаме по-долу, е очакваният резултат.
12:30:20
Като използвате комбинация от тези две функции, можете да извлечете всяка възможна комбинация от дата и час от текстов низ.