W MySQL funkcja DATE_FORMAT()
funkcja umożliwia formatowanie daty i czasu.
Oto przykład:
SELECT DATE_FORMAT('2018-12-01', '%W, %d %M %Y');
Wynik:
Saturday, 01 December 2018
W tym przykładzie %W
dotyczy nazwy dnia tygodnia, %d
dotyczy dnia miesiąca, %M
dotyczy miesiąca, a %Y
jest na rok. Dostępnych jest wiele innych specyfikatorów formatu, które umożliwiają określenie dokładnego formatu dat, a także składnika czasu.
Formatowanie składnika czasu
Oto przykład formatowania składnika czasu:
SELECT DATE_FORMAT('2018-12-01 11:03:15', '%H:%i:%s %p');
Wynik:
11:03:15 AM
W tym przykładzie %p
służy do wyświetlania AM lub PM, w zależności od przypadku.
Oczywiście możesz je połączyć, aby sformatować zarówno datę, jak i godzinę za jednym razem:
SELECT DATE_FORMAT('2018-12-01 11:03:15', '%H:%i:%s %p, %W, %d %M %Y');
Wynik:
11:03:15 AM, Saturday, 01 December 2018
Formatowanie za pomocą funkcji daty/godziny
Często będziesz chciał użyć DATE_FORMAT()
wraz z inną funkcją daty/czasu. Na przykład możesz go użyć razem z CURDATE()
aby zwrócić aktualną datę, ładnie sformatowaną:
SELECT CURDATE() AS Unformatted, DATE_FORMAT(CURDATE(), '%W, %M %d, %Y') AS Formatted;
Wynik:
+-------------+----------------------+ | Unformatted | Formatted | +-------------+----------------------+ | 2018-05-04 | Friday, May 04, 2018 | +-------------+----------------------+
Możesz to również zrobić za pomocą NOW()
funkcja, jeśli potrzebujesz czasu:
SELECT NOW() AS Unformatted, DATE_FORMAT(NOW(), '%r') AS Formatted;
Wyniki:
+---------------------+-------------+ | Unformatted | Formatted | +---------------------+-------------+ | 2018-05-04 14:33:52 | 02:33:52 PM | +---------------------+-------------+
Funkcja TIME_FORMAT()
MySQL ma również TIME_FORMAT()
funkcja, której można użyć do formatowania czasu. Ta funkcja działa podobnie do DATE_FORMAT()
z wyjątkiem tego, że TIME_FORMAT()
akceptuje tylko specyfikatory formatu tylko dla godzin, minut, sekund i mikrosekund.
Przykład:
SET @time = '07:35:10'; SELECT TIME_FORMAT(@time, '%H') AS Hour, TIME_FORMAT(@time, '%i') AS Minute, TIME_FORMAT(@time, '%s') As Seconds, TIME_FORMAT(@time, '%p') AS 'AM or PM';
Wyniki:
+------+--------+---------+----------+ | Hour | Minute | Seconds | AM or PM | +------+--------+---------+----------+ | 07 | 35 | 10 | AM | +------+--------+---------+----------+
Funkcja STR_TO_DATE()
STR_TO_DATE()
funkcja jest odwrotnością DATE_FORMAT()
funkcjonować. Umożliwia podanie ciągu, który ma być sformatowany jako data. Przyjmuje dwa parametry; ciąg i format.
Oto przykład:
SELECT STR_TO_DATE('Saturday, 6 December 2018', '%W, %d %M %Y') AS Date;
Wynik:
+------------+ | Date | +------------+ | 2018-12-06 | +------------+
Jak znaleźć właściwy format daty
MySQL ma przydatną małą funkcję o nazwie GET_FORMAT()
. Ta funkcja pomaga znaleźć właściwy format do użycia podczas korzystania z DATE_FORMAT()
funkcja i/lub STR_TO_DATE()
funkcja .
Oto jak to działa:
SELECT GET_FORMAT(DATE, 'USA');
Skutkuje to następującym:
%m.%d.%Y
Co mówi nam, jaki ciąg formatujący musielibyśmy użyć podczas formatowania daty za pomocą DATE_FORMAT()
funkcjonować. Na przykład możemy wziąć wyniki z tego przykładu i zastosować je do DATE_FORMAT()
funkcja:
SELECT DATE_FORMAT(NOW(), '%m.%d.%Y');
I skończyliśmy z pożądanym wynikiem:
05.04.2018
Możesz także przekazać GET_FORMAT()
bezpośrednio do DATE_FORMAT()
jeśli wolisz.
SELECT DATE_FORMAT(NOW(), GET_FORMAT(DATE, 'USA'));
Wynik:
05.04.2018
W każdym razie poniżej znajdują się przykłady z różnymi opcjami.
Data
SELECT GET_FORMAT(DATE, 'USA') AS USA, GET_FORMAT(DATE, 'JIS') AS JIS, GET_FORMAT(DATE, 'ISO') AS ISO, GET_FORMAT(DATE, 'EUR') AS EUR, GET_FORMAT(DATE, 'INTERNAL') AS INTERNAL;
Wynik:
+----------+----------+----------+----------+----------+ | USA | JIS | ISO | EUR | INTERNAL | +----------+----------+----------+----------+----------+ | %m.%d.%Y | %Y-%m-%d | %Y-%m-%d | %d.%m.%Y | %Y%m%d | +----------+----------+----------+----------+----------+
Data i godzina
SELECT GET_FORMAT(DATETIME, 'USA') AS USA, GET_FORMAT(DATETIME, 'JIS') AS JIS, GET_FORMAT(DATETIME, 'ISO') AS ISO, GET_FORMAT(DATETIME, 'EUR') AS EUR, GET_FORMAT(DATETIME, 'INTERNAL') AS INTERNAL;
Wynik:
+-------------------+-------------------+-------------------+-------------------+--------------+ | USA | JIS | ISO | EUR | INTERNAL | +-------------------+-------------------+-------------------+-------------------+--------------+ | %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 | +-------------------+-------------------+-------------------+-------------------+--------------+
Czas
SELECT GET_FORMAT(TIME, 'USA') AS USA, GET_FORMAT(TIME, 'JIS') AS JIS, GET_FORMAT(TIME, 'ISO') AS ISO, GET_FORMAT(TIME, 'EUR') AS EUR, GET_FORMAT(TIME, 'INTERNAL') AS INTERNAL;
Wynik:
+-------------+----------+----------+----------+----------+ | USA | JIS | ISO | EUR | INTERNAL | +-------------+----------+----------+----------+----------+ | %h:%i:%s %p | %H:%i:%s | %H:%i:%s | %H.%i.%s | %H%i%s | +-------------+----------+----------+----------+----------+