W MariaDB, DATE_FORMAT()
to wbudowana funkcja daty i czasu, która formatuje datę zgodnie z podanym ciągiem formatu.
Wymaga dwóch argumentów; data i ciąg formatu. Akceptuje również opcjonalny trzeci argument, który pozwala określić ustawienia regionalne.
Składnia
Składnia wygląda tak:
DATE_FORMAT(date, format[, locale])
Gdzie date
to data, format
jest ciągiem formatu (zobacz akceptowane specyfikatory formatu) i locale
jest opcjonalnym ustawieniem regionalnym do użycia dla zwróconego formatu.
Przykład
Oto przykład:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y');
Wynik:
+----------------------------------------------------+ | DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y') | +----------------------------------------------------+ | Friday, 25th January 2030 | +----------------------------------------------------+
Tutaj znowu, ale tym razem używając %r
aby zwrócić czas w formacie 12-godzinnym:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r');
Wynik:
+------------------------------------------+ | DATE_FORMAT('2030-01-25 10:30:45', '%r') | +------------------------------------------+ | 10:30:45 AM | +------------------------------------------+
Możemy je łączyć, aby otrzymać godzinę i datę:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y');
Wynik:
+-------------------------------------------------------+ | DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y') | +-------------------------------------------------------+ | 10:30:45 AM Friday, 25th January 2030 | +-------------------------------------------------------+
Język nazw miesięcy, nazw dni itp. określa lc_time_names
zmienna systemowa. Wartość domyślna to zawsze en_US
niezależnie od ustawień regionalnych systemu. Oto jak sprawdzić swoje bieżące ustawienie.
Argument dotyczący ustawień regionalnych
Począwszy od MariaDB 10.3.2, do określenia ustawień regionalnych można użyć opcjonalnego trzeciego argumentu. Gdy jest to określone, funkcja jest niezależna od ustawień sesji.
SELECT DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR');
Wynik:
+----------------------------------------------------+ | DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR') | +----------------------------------------------------+ | viernes, 25th enero 2030 | +----------------------------------------------------+
Oto kilka innych lokalizacji:
SELECT
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'fr_FR') AS fr_FR,
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'hr_HR') AS hr_HR,
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'ms_MY') AS fr_FR,
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'th_TH') AS th_TH;
Wynik:
fr_FR: vendredi, 25th janvier 2030 hr_HR: Petak, 25th Siječanj 2030 fr_FR: Jumaat, 25th Januari 2030 th_TH: ศุกร์, 25th มกราคม 2030
W tym przypadku ostatni jest tajlandzki i chociaż używa znaków tajlandzkich dla nazwy miesiąca i dnia, nie zmienia roku na kalendarz tajlandzki. Rok 2030 byłby 2573 przy użyciu tajlandzkiego kalendarza. Sądzę więc, że założenie jest takie, że jeśli chcesz używać roku tajskiego, to data, w której przechodzisz, będzie już używała roku tajskiego.
Aktualna data
Tutaj przekazujemy NOW()
jako argument data w celu sformatowania bieżącej daty:
SELECT DATE_FORMAT(NOW(), '%r %W, %D %M %Y');
Wynik:
+---------------------------------------+ | DATE_FORMAT(NOW(), '%r %W, %D %M %Y') | +---------------------------------------+ | 09:53:00 AM Tuesday, 11th May 2021 | +---------------------------------------+
Nieprawidłowe argumenty
Po przekazaniu jakichkolwiek nieprawidłowych argumentów, DATE_FORMAT()
zwraca null
:
SELECT DATE_FORMAT('Homer', 'Simpson');
Wynik:
+---------------------------------+ | DATE_FORMAT('Homer', 'Simpson') | +---------------------------------+ | NULL | +---------------------------------+
Brakujący argument
Wywołanie DATE_FORMAT()
z niewłaściwą liczbą argumentów lub bez przekazywania jakichkolwiek argumentów powoduje błąd:
SELECT DATE_FORMAT();
Wynik:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
I kolejny przykład:
SELECT DATE_FORMAT('2030-05-21');
Wynik:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
GET_FORMAT()
Funkcja
Możesz także użyć GET_FORMAT()
funkcja w drugim argumencie DATE_FORMAT()
. Spowoduje to zwrócenie pełnego ciągu formatu dla danego formatu daty, co pozwala uniknąć konieczności zapamiętywania ciągu formatu, którego należy użyć.