DATE_FORMAT – opis funkcji SQL z przykładami – Kurs języka SQL
DATE_FORMAT() – funkcja formatująca podaną datę do określonego formatu. Poniżej znajduje się lista parametrów, które mogą zostać użyte do określenia formatu zwróconej daty/czasu. Parametry można ze sobą łączyć.
Wywołanie funkcji wygląda następująco:
SELECT DATE_FORMAT('data/czas', 'format');
%a – skrócona nazwa dnia tygodnia (Sun..Sat)
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%a'); -- Tue
%b – skrócona nazwa dnia tygodnia (Jan..Dec)
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%b'); -- Apr
%c – numer miesiąca (0..12)
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%c'); -- 4
%D – numer dnia (0..12) z sufiksem (0th, 1st, 2nd, 3rd, …)
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%D'); -- 5th
%d – numer dnia (01..31)
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%d'); -- 05
%e – funkcja zwraca dzień miesiąca (0..31)
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%e'); -- 5
%f – zwraca liczbę milisekund z podanego czasu (000000..999999)
SELECT DATE_FORMAT('2016-04-00 11:14:47.46543', '%f'); -- 465430
%H – zwraca godzinę dla podanego czasu (00..23)
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%H'); -- 11
%h – zwraca godzinę dla podanego czasu (01..12)
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%h'); -- 11
%I – zwraca godzinę dla podanego czasu (01..12)
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%I'); -- 11
%i – zwraca minuty dla podanego czasu (00..59)
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%i'); -- 14
%j – zwraca numer dnia w roku (001..366)
SELECT DATE_FORMAT('2016-04-00 11:14:47', '%j'); -- 091
%k – zwraca godzinę dla podanego czasu (0..23)
SELECT DATE_FORMAT('2016-04-00 11:14:47', '%k'); -- 11
%l – zwraca godzinę dla podanego czasu (1..12)
SELECT DATE_FORMAT('2016-04-00 11:14:47', '%l'); -- 11
%M – pełna nazwa miesiąca (January..December)
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%M'); -- April
%m – numer miesiąca (00..12)
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%m'); -- 04
%p – zwraca AM lub PM dla podanego czasu
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%p'); -- AM
%r – zwraca AM lub PM wraz z podanym czasem
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%r'); -- 11:14:47 AM
%S – liczba sekund dla podanego czasu (00..59)
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%S'); -- 47
%s – liczba sekund dla podanego czasu (00..59)
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%s'); -- 47
%T – zwraca czas z podanej wartości w formacie hh:mm:ss
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%T'); -- 11:14:47
%U – numer tygodnia w roku (00..53), gdzie niedziela jest pierwszym dniem tygodnia
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%U'); -- 14
%u – numer tygodnia w roku (00..53), gdzie poniedziałek jest pierwszym dniem tygodnia
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%u'); -- 14
%V – numer tygodnia w roku (01..53), gdzie niedziela jest pierwszym dniem tygodnia
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%V'); -- 14
%v – numer tygodnia w roku (01..53), gdzie poniedziałek jest pierwszym dniem tygodnia
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%v'); -- 14
%W – pełna nazwa dnia tygodnia (Sunday..Saturday)
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%W'); -- Tuesday
%w – dzień tygodnia – liczbowo (0-Sunday..6-Saturday)
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%w'); -- 2
%X – rok dla tygodnia, gdzie pierwszy dzień tygodnia to niedziela
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%X'); -- 2016
%x – rok dla tygodnia, gdzie pierwszy dzień tygodnia to poniedziałek
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%x'); -- 2016
%Y – funkcja zwraca rok w formacie YYYY
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%Y'); -- 2016
%y – funkcja zwraca rok w formacie YY
SELECT DATE_FORMAT('2016-04-05 11:14:47', '%y'); -- 16
Przykłady
1. Funkcja zwracająca aktualną datę oraz czas w formacie: 05.04.2016, 12:04:48
SELECT DATE_FORMAT(NOW(), '%d.%m.%Y, %h:%m:%s');
2. Funkcja zwracająca aktualną datę w formacie: 5th April 2016
SELECT DATE_FORMAT(NOW(), '%D %M %Y');
3. Funkcja zwracająca aktualną datę w formacie: 05-04-2016
SELECT DATE_FORMAT(CURDATE(), '%d-%m-%Y');
4. Jaki dzień tygodnia wypada w dniu 2022-02-05 (Saturday)
SELECT DATE_FORMAT('2022-02-05', '%W');