W MariaDB, STR_TO_DATE()
to wbudowana funkcja daty i czasu, która zwraca wartość daty i godziny na podstawie podanego ciągu daty i ciągu formatu.
STR_TO_DATE()
funkcja jest odwrotnością DATE_FORMAT()
funkcja.
Składnia
Składnia wygląda tak:
STR_TO_DATE(str,format)
Gdzie str
to ciąg daty, a format
jest ciągiem formatu, który określa format ciągu daty.
Przykład
Oto przykład:
SELECT STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y');
Wynik:
+------------------------------------------------------+ | STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y') | +------------------------------------------------------+ | 2021-05-24 | +------------------------------------------------------+
Ciąg formatu składa się z wielu specyfikatorów formatu, które informują MariaDB o sposobie formatowania daty w pierwszym argumencie. Zobacz ciągi formatujące MariaDB, aby uzyskać listę specyfikatorów formatu, których można użyć w ciągu formatującym.
W tym przykładzie wynikiem jest wartość daty, ponieważ ciąg formatujący zawiera tylko części daty.
Zwróć wartość daty i godziny
Oto przykład, który zwraca wartość daty i godziny:
SELECT STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S');
Wynik:
+---------------------------------------------------+ | STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S') | +---------------------------------------------------+ | 2021-05-24 00:00:00 | +---------------------------------------------------+
W tym przykładzie dodano część czasu, mimo że pierwszy argument nie zawierał części czasu.
Oto kolejny przykład, który zawiera część czasu w pierwszym argumencie:
SELECT
STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y');
Wynik:
+------------------------------------------------------------------+ | STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y') | +------------------------------------------------------------------+ | 2021-05-24 10:30:45 | +------------------------------------------------------------------+
Oto kolejny, w którym ciąg daty używa luźniejszej wartości czasu:
SELECT
STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y');
Wynik:
+----------------------------------------------------------------+ | STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y') | +----------------------------------------------------------------+ | 2021-05-24 10:30:00 | +----------------------------------------------------------------+
Zwróć wartość czasu
Tutaj zmieniamy ciąg formatujący, aby zwracał tylko wartość czasu:
SELECT STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S');
Wynik:
+-----------------------------------------------------+ | STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S') | +-----------------------------------------------------+ | 10:30:45 | +-----------------------------------------------------+
Niedozwolony ciąg daty/godziny
Przekazanie nieprawidłowego ciągu daty zwraca null
z ostrzeżeniem.
Przykład:
SELECT STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y');
Wynik:
+-------------------------------------------------------+ | STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y') | +-------------------------------------------------------+ | NULL | +-------------------------------------------------------+ 1 row in set, 1 warning (0.009 sec)
Spójrzmy na ostrzeżenie:
SHOW WARNINGS;
Wynik:
+---------+------+----------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------------------------------------+ | Warning | 1411 | Incorrect datetime value: 'Humpday, May 26, 2021' for function str_to_date | +---------+------+----------------------------------------------------------------------------+
Brakujący argument
Wywołanie STR_TO_DATE()
z niewłaściwą liczbą argumentów lub bez przekazywania jakichkolwiek argumentów powoduje błąd:
SELECT STR_TO_DATE();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'
I kolejny przykład:
SELECT STR_TO_DATE('Friday, 28 May 2021');
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'