Mysql
 sql >> Baza danych >  >> RDS >> Mysql

STR_TO_DATE() Przykłady – MySQL

MySQL STR_TO_DATE() funkcja pozwala na zbudowanie wartości daty z różnych części daty.

Korzystając z tej funkcji, podajesz ciąg różnych części daty i drugi argument, który określa format, w jakim jest podana data.

Składnia

Składnia wygląda tak:

STR_TO_DATE(str,format)

Gdzie str jest ciągiem zawierającym części daty, a format jest ciągiem formatu (określa sposób, w jaki str argument jest sformatowany).

Przykład 1 – Podstawowe użycie

Oto przykład do zademonstrowania.

SELECT STR_TO_DATE('31,12,1999','%d,%m,%Y');

Wynik:

+--------------------------------------+
| STR_TO_DATE('31,12,1999','%d,%m,%Y') |
+--------------------------------------+
| 1999-12-31                           |
+--------------------------------------+

Przykład 2 – Kolejność ciągu formatującego

Ciąg formatu musi być zgodny z wartościami podanymi w ciągu daty. Na przykład nie możesz wykonać następujących czynności:

SELECT STR_TO_DATE('31,12,1999','%m,%d,%Y');

Wynik:

+--------------------------------------+
| STR_TO_DATE('31,12,1999','%m,%d,%Y') |
+--------------------------------------+
| NULL                                 |
+--------------------------------------+

Powodem, dla którego to nie zadziałało, jest to, że próbujemy zmusić miesiąc do wartości 31, ale w roku jest tylko 12 miesięcy. Spowodowałoby to nieprawidłową wartość daty.

Dlatego musisz być ostrożny podczas korzystania z tej funkcji, zwłaszcza gdy wartość dnia wynosi 12 lub mniej, w przeciwnym razie możesz zamienić się wartościami miesiąca i dnia bez zauważenia tego.

Na przykład tak:

SELECT 
    STR_TO_DATE('07,12,1999','%d,%m,%Y'),
    STR_TO_DATE('07,12,1999','%m,%d,%Y');

Wynik:

+--------------------------------------+--------------------------------------+
| STR_TO_DATE('07,12,1999','%d,%m,%Y') | STR_TO_DATE('07,12,1999','%m,%d,%Y') |
+--------------------------------------+--------------------------------------+
| 1999-12-07                           | 1999-07-12                           |
+--------------------------------------+--------------------------------------+

W tym przypadku nie otrzymamy wartości NULL jak w poprzednim przykładzie, ponieważ oba 07 i 12 może być dzień lub miesiąc.

Przykład 3 – Dopasowywanie ciągu formatującego

Nawet jeśli ciąg formatu jest we właściwej kolejności, musi również odpowiadać formatowi części daty podanych w pierwszym argumencie.

Na przykład nie możesz tego zrobić:

SELECT STR_TO_DATE('31 Dec, 1999','%d,%m,%Y');

Wynik:

+----------------------------------------+
| STR_TO_DATE('31 Dec, 1999','%d,%m,%Y') |
+----------------------------------------+
| NULL                                   |
+----------------------------------------+

W takim przypadku musielibyśmy zrobić coś takiego:

SELECT STR_TO_DATE('31 Dec, 1999','%d %M, %Y');

Wynik:

+-----------------------------------------+
| STR_TO_DATE('31 Dec, 1999','%d %M, %Y') |
+-----------------------------------------+
| 1999-12-31                              |
+-----------------------------------------+

Przykład 4 – Korzystanie z funkcji GET_FORMAT()

Możesz także przekazać GET_FORMAT() funkcja jako drugi argument.

Oto przykład.

SELECT STR_TO_DATE('12.07.1999', GET_FORMAT(DATE, 'USA'));

Wynik:

+----------------------------------------------------+
| STR_TO_DATE('12.07.1999', GET_FORMAT(DATE, 'USA')) |
+----------------------------------------------------+
| 1999-12-07                                         |
+----------------------------------------------------+

Przykład 5 – Wartości daty i godziny

Możesz również użyć tej funkcji, aby zwrócić wartość czasu lub daty i godziny.

Oto przykład z użyciem wartości daty i godziny.

SELECT STR_TO_DATE('31/12/1999 09:30:17','%d/%m/%Y %H:%i:%s');

Wynik:

+--------------------------------------------------------+
| STR_TO_DATE('31/12/1999 09:30:17','%d/%m/%Y %H:%i:%s') |
+--------------------------------------------------------+
| 1999-12-31 09:30:17                                    |
+--------------------------------------------------------+

Specyfikatory ciągu formatu

W ciągu formatu można użyć następujących specyfikatorów. Oprócz tego w ciągu formatującym można również użyć ciągów literowych.

Specyfikator Opis
%a Skrócona nazwa dnia tygodnia (Sun ..Sat )
%b Skrócona nazwa miesiąca (Jan ..Dec )
%c Miesiąc, numeryczny (0th ..12 )
%D Dzień miesiąca z angielskim sufiksem (0th , 1st , 2nd , 3rd , …)
%d Dzień miesiąca, numeryczny (00 ..31 )
%e Dzień miesiąca, numeryczny (0th ..31 )
%f Mikrosekundy (000000 ..999999 )
%H Godzina (00 ..23 )
%h Godzina (01 ..12 )
%I Godzina (01 ..12 )
%i Minuty, numeryczne (00 ..59 )
%j Dzień roku (001 ..366 )
%k Godzina (0th ..23 )
%l Godzina (1 ..12 )
%M Nazwa miesiąca (January ..December )
%m Miesiąc, numerycznie (00 ..12 )
%p AM lub PM
%r Czas, 12 godzin (hh:mm:ss po którym następuje AM lub PM )
%S Sekundy (00 ..59 )
%s Sekundy (00 ..59 )
%T Czas, 24 godziny (hh:mm:ss )
%U Tydzień (00 ..53 ), gdzie niedziela jest pierwszym dniem tygodnia; WEEK() tryb 0
%u Tydzień (00 ..53 ), gdzie poniedziałek to pierwszy dzień tygodnia; WEEK() tryb 1
%V Tydzień (01 ..53 ), gdzie niedziela jest pierwszym dniem tygodnia; WEEK() tryb 2; używane z %X
%v Tydzień (01 ..53 ), gdzie poniedziałek to pierwszy dzień tygodnia; WEEK() tryb 3; używane z %x
%W Nazwa dnia tygodnia (Sunday ..Saturday )
%w Dzień tygodnia (0th =Niedziela...6 =Sobota)
%X Rok dla tygodnia, w którym niedziela jest pierwszym dniem tygodnia, liczba, cztery cyfry; używane z %V
%x Rok tygodnia, gdzie poniedziałek to pierwszy dzień tygodnia, numeryczny, cztery cyfry; używane z %v
%Y Rok, numerycznie, cztery cyfry
%y Rok, numeryczny (dwie cyfry)
%% Dosłowny % znak
%x x , dla każdego „x ” nie wymienione powyżej

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Neo4j - Utwórz indeks za pomocą Cypher

  2. Tworzenie funkcji w phpMyAdmin - Błąd:odmowa dostępu, potrzebujesz super uprawnień do tej operacji

  3. Jak pokazać sortowanie połączenia w MySQL?

  4. MySQL 'Order By' - poprawne sortowanie znaków alfanumerycznych

  5. mySQL konwertuje varchar na datę