MariaDB включва много функции, които ви позволяват да връщате стойности за време и дата и час в различни формати.
Две функции ви позволяват да форматирате частта от времето с помощта на 12-часов часовник, с обозначението AM/PM са DATE_FORMAT()
и TIME_FORMAT()
.
Има много спецификатори на формат, които могат да се използват с тези функции, но само няколко, които връщат обозначението AM/PM.
%r
Спецификатор на формат
%r
спецификаторът на формат се използва за форматиране на времето в 12-часов формат, последвано от обозначението AM/PM.
Пример:
SELECT DATE_FORMAT('2030-03-10 18:10:37', '%r');
Резултат:
+------------------------------------+| DATE_FORMAT('2030-03-10 18:10:37', '%r') |+---------------------------- --------------+| 18:10:37 |+-------------------------------------------------- +
Полученото време се показва така, сякаш е форматирано с помощта на следния форматен низ:'%I:%i:%S %p'
.
Очевидно, дали връща AM
или PM
зависи от реалното време. Часове преди 12:00:00
върнете AM
и времена след това върнете PM
.
Ето какво се случва, ако променим времето, което идва преди 12:00:00
:
SELECT DATE_FORMAT('2030-03-10 06:10:37', '%r');
Резултат:
+------------------------------------+| DATE_FORMAT('2030-03-10 06:10:37', '%r') |+---------------------------- --------------+| 06:10:37 AM |+-------------------------------------------------- +
И двете DATE_FORMAT()
и TIME_FORMAT()
приемете %r
спецификатор на формат, така че можем да използваме същия спецификатор на формат с TIME_FORMAT()
функция:
SELECT TIME_FORMAT('06:10:37', '%r');
Резултат:
+-------------------------------+| TIME_FORMAT('06:10:37', '%r') |+------------------------------+| 06:10:37 AM |+------------------------------+
TIME_FORMAT()
приема стойности за време, както и стойности за дата и час, докато DATE_FORMAT()
приема само стойности за дата и час. Въпреки това, TIME_FORMAT()
приема само спецификатори на формат за часове минути и секунди. Вижда се като %r
връща часове, минути и секунди, това също се приема.
%p
Спецификатор на формат
%p
спецификаторът на формат е по-специфичен спецификатор на формат, който се използва единствено за представяне на обозначението AM/PM. Обикновено се използва във връзка с други спецификатори на формат за връщане на времето в персонализиран формат.
Както споменахме, %r
спецификаторът на формат форматира времето, сякаш е форматирано с помощта на следния форматен низ:'%I:%i:%S %p'
.
Нека използваме този низ изрично:
SELECT TIME_FORMAT('18:10:37', '%I:%i:%S %p');
Резултат:
+---------------------------------------+| TIME_FORMAT('18:10:37', '%I:%i:%S %p') |+------------------------ ---------------+| 18:10:37 |+---------------------------------------+предварително>Така получаваме същия резултат като при използване на
%r
спецификатор на формат.Въпреки това, едно предимство от използването на този метод е, че можем да конструираме изхода по наш собствен начин.
Например:
SELECT TIME_FORMAT('18:10:37', '%l:%i %p');
Резултат:
+-------------------------------------+| TIME_FORMAT('18:10:37', '%l:%i %p') |+---------------------------- ---------+| 18:10 |+----------------------------------------+Тук използвахме
%l
за да върнете часовата част без водещата нула. Пропуснахме и частта от секундите от времето.Вижте MariaDB Format Strings за пълен списък с спецификатори на формат, които могат да се използват с тези функции.