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'