В MySQL, DATE_FORMAT()
функцията ви позволява да форматирате датата и часа.
Ето един пример:
ИЗБЕРЕТЕ DATE_FORMAT('2018-12-01', '%W, %d %M %Y');
Резултат:
Събота, 01 декември 2018 г.
В този пример %W
е за името на деня от седмицата, %d
е за деня от месеца, %M
е за месец и %Y
е за година. Налични са много повече спецификатори на формат, които ви позволяват да зададете точен формат за дати, както и компонент за време.
Форматиране на компонента за време
Ето пример за форматиране на компонента за време:
SELECT DATE_FORMAT('2018-12-01 11:03:15', '%H:%i:%s %p');
Резултат:
11:03:15 ч.
В този пример %p
се използва за показване на AM или PM, в зависимост от случая.
Разбира се, можете да ги комбинирате заедно, за да форматирате датата и часа наведнъж:
SELECT DATE_FORMAT('2018-12-01 11:03:15', '%H:%i:%s %p, %W, %d %M %Y');
Резултат:
11:03:15 ч., събота, 1 декември 2018 г.
Форматиране с функция за дата/час
Често ще искате да използвате DATE_FORMAT()
заедно с друга функция за дата/час. Например, можете да го използвате заедно с CURDATE()
за да върнете текущата дата, добре форматирана:
ИЗБЕРЕТЕ CURDATE() КАТО неформатиран, DATE_FORMAT(CURDATE(), '%W, %M %d, %Y') КАТО форматиран;
Резултат:
+------------+---------------------+| Неформатиран | Форматиран |+-----------+---------------------+| 2018-05-04 | петък, 04 май 2018 г. |+------------+---------------------+
Можете също да направите това с NOW()
функция, ако имате нужда от време:
SELECT NOW() КАТО неформатиран, DATE_FORMAT(NOW(), '%r') КАТО форматиран;
Резултати:
<пред>+---------------------+------------+| Неформатиран | Форматиран |+---------------------+------------+| 2018-05-04 14:33:52 | 14:33:52 |+---------------------+------------+Функцията TIME_FORMAT()
MySQL също има TIME_FORMAT()
функция, която може да се използва за форматиране на часа. Тази функция работи подобно на DATE_FORMAT()
освен че TIME_FORMAT()
приема само спецификатори на формат само за часове, минути, секунди и микросекунди.
Пример:
SET @time ='07:35:10'; SELECT TIME_FORMAT(@time, '%H') КАТО час, TIME_FORMAT(@time, '%i') КАТО минута, TIME_FORMAT(@time, '%s') Като секунди, TIME_FORMAT(@time, '%p') КАТО 'AM or PM';
Резултати:
+------+-------+--------+----------+| Час | Минута | Секунди | AM или PM |+------+-------+--------+---------+| 07 | 35 | 10 | AM |+------+--------+--------+----------+
Функцията STR_TO_DATE()
STR_TO_DATE()
функцията е обратна на DATE_FORMAT()
функция. Позволява ви да предоставите низ, който да бъде форматиран като дата. Приема два параметъра; низа и формата.
Ето един пример:
SELECT STR_TO_DATE('събота, 6 декември 2018 г.', '%W, %d %M %Y') AS Дата;
Резултат:
+-----------+| Дата |+-----------+| 2018-12-06 |+-----------+
Как да намерим правилния формат на датата
MySQL има удобна малка функция, наречена GET_FORMAT()
. Тази функция ви помага да намерите правилния формат, който да използвате, когато използвате DATE_FORMAT()
функция и/или STR_TO_DATE()
функция .
Ето как работи:
ИЗБЕРЕТЕ GET_FORMAT(ДАТА, 'САЩ');
Това води до следното:
%m.%d.%Y
Което ни казва форматния низ, който ще трябва да използваме, когато форматираме дата с DATE_FORMAT()
функция. Например, можем да вземем резултатите от този пример и да ги приложим към DATE_FORMAT()
функция:
ИЗБЕРЕТЕ DATE_FORMAT(NOW(), '%m.%d.%Y');
И в крайна сметка ще постигнем желания резултат:
05.04.2018
Можете също да подадете GET_FORMAT()
директно към DATE_FORMAT()
ако предпочитате.
ИЗБЕРЕТЕ DATE_FORMAT(NOW(), GET_FORMAT(DATE, 'САЩ'));
Резултат:
05.04.2018
Във всеки случай, по-долу са примери с различни опции.
Дата
ИЗБЕРЕТЕ GET_FORMAT(DATE, 'USA') КАТО САЩ, GET_FORMAT(DATE, 'JIS') КАТО JIS, GET_FORMAT(DATE, 'ISO') КАТО ISO, GET_FORMAT(DATE, 'EUR') КАТО EUR, GET_FORMAT( ДАТА, 'INTERNAL') КАТО ВЪТРЕШНО;
Резултат:
+----------+-----------+---------+----------+-- --------+| САЩ | JIS | ISO | евро | ВЪТРЕШНО |+----------+-----------+----------+---------+--- -------+| %m.%d.%Y | %Y-%m-%d | %Y-%m-%d | %d.%m.%Y | %Y%m%d |+----------+---------+----------+--------- -+----------+
Дата и час
ИЗБЕРЕТЕ GET_FORMAT(DATETIME, 'USA') КАТО САЩ, GET_FORMAT(DATETIME, 'JIS') КАТО JIS, GET_FORMAT(DATETIME, 'ISO') КАТО ISO, GET_FORMAT(DATETIME, 'EUR') КАТО EUR, GET_FORMAT( DATETIME, 'INTERNAL') КАТО ВЪТРЕШНО;
Резултат:
+-------------------+--------------------+------ -------------+-------------------+--------------+| САЩ | JIS | ISO | евро | ВЪТРЕШНО |+------------------+-------------------+------- ------------+------------------+--------------+| %Y-%m-%d %H.%i.%s | %Y-%m-%d %H:%i:%s | %Y-%m-%d %H:%i:%s | %Y-%m-%d %H.%i.%s | %Y%m%d%H%i%s |+------------------+---------------- ---+------------------+-------------------+------ --------+
Време
ИЗБЕРЕТЕ GET_FORMAT(TIME, 'USA') КАТО САЩ, GET_FORMAT(TIME, 'JIS') КАТО JIS, GET_FORMAT(TIME, 'ISO') КАТО ISO, GET_FORMAT(TIME, 'EUR') КАТО EUR, GET_FORMAT( ВРЕМЕ, 'ВЪТРЕШНО') КАТО ВЪТРЕШНО;
Резултат:
+------------+----------+----------+---------- +----------+| САЩ | JIS | ISO | евро | ВЪТРЕШНО |+------------+----------+----------+----------+ ----------+| %h:%i:%s %p | %H:%i:%s | %H:%i:%s | %H.%i.%s | %H%i%s |+------------+----------+----------+------ ----+---------+