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 за пълен списък с спецификатори на формат, които могат да се използват с тези функции.