sql >> Database >  >> RDS >> Mysql

STR_TO_DATE() Voorbeelden – MySQL

De MySQL STR_TO_DATE() functie stelt u in staat om een ​​datumwaarde op te bouwen uit de verschillende datumdelen.

Wanneer u deze functie gebruikt, geeft u een reeks van de verschillende datumdelen op en een tweede argument dat het formaat specificeert waarin de datum wordt geleverd.

Syntaxis

De syntaxis gaat als volgt:

STR_TO_DATE(str,format)

Waar str is de string die de datumdelen bevat, en format is de format string (bepaalt hoe de str argument is opgemaakt).

Voorbeeld 1 – Basisgebruik

Hier is een voorbeeld om te demonstreren.

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

Resultaat:

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

Voorbeeld 2 – Volgorde van de opmaakstring

De opmaakreeks moet overeenkomen met de waarden in de datumreeks. U kunt bijvoorbeeld het volgende niet doen:

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

Resultaat:

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

De reden dat dit niet werkte, is omdat we proberen de maand een waarde van 31 te geven, maar er zijn maar 12 maanden in een jaar. Dit zou dus resulteren in een ongeldige datumwaarde.

Daarom moet u voorzichtig zijn bij het gebruik van deze functie, vooral wanneer de dagwaarde 12 of minder is, anders zou u kunnen eindigen met het verwisselen van de maand- en dagwaarden zonder dat u het merkt.

Bijvoorbeeld als volgt:

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

Resultaat:

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

In dit geval krijgen we geen NULL-waarde zoals in het vorige voorbeeld, omdat beide 07 en 12 kan een dag of een maand zijn.

Voorbeeld 3 – Overeenkomen met de opmaakstring

Zelfs als de opmaakreeks in de juiste volgorde staat, moet deze ook overeenkomen met de opmaak van de datumgedeelten die in het eerste argument zijn opgegeven.

U kunt dit bijvoorbeeld niet doen:

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

Resultaat:

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

In dit geval zouden we zoiets als dit moeten doen:

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

Resultaat:

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

Voorbeeld 4 – De functie GET_FORMAT() gebruiken

U kunt ook de GET_FORMAT() . doorgeven functioneren als het tweede argument.

Hier is een voorbeeld.

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

Resultaat:

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

Voorbeeld 5 – Datum/tijd-waarden

Je kunt deze functie ook gebruiken om een ​​tijd- of datetime-waarde te retourneren.

Hier is een voorbeeld met een datetime-waarde.

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

Resultaat:

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

Opmaak tekenreeksspecificaties

De volgende specificaties kunnen worden gebruikt in de opmaakreeks. Naast deze kunt u ook letterlijke tekenreeksen gebruiken in de opmaakreeks.

Beschrijving Beschrijving
%a Afgekorte naam van de weekdag (Sun ..Sat )
%b Afgekorte maandnaam (Jan ..Dec )
%c Maand, numeriek (0 ..12 )
%D Dag van de maand met Engels achtervoegsel (0th , 1st , 2nd , 3rd , …)
%d Dag van de maand, numeriek (00 ..31 )
%e Dag van de maand, numeriek (0 ..31 )
%f Microseconden (000000 ..999999 )
%H Uur (00 ..23 )
%h Uur (01 ..12 )
%I Uur (01 ..12 )
%i Minuten, numeriek (00 ..59 )
%j Dag van het jaar (001 ..366 )
%k Uur (0 ..23 )
%l Uur (1 ..12 )
%M Maandnaam (January ..December )
%m Maand, numeriek (00 ..12 )
%p AM of PM
%r Tijd, 12 uur (hh:mm:ss gevolgd door AM of PM )
%S Seconden (00 ..59 )
%s Seconden (00 ..59 )
%T Tijd, 24 uur (hh:mm:ss )
%U Week (00 ..53 ), waarbij zondag de eerste dag van de week is; WEEK() modus 0
%u Week (00 ..53 ), waarbij maandag de eerste dag van de week is; WEEK() modus 1
%V Week (01 ..53 ), waarbij zondag de eerste dag van de week is; WEEK() modus 2; gebruikt met %X
%v Week (01 ..53 ), waarbij maandag de eerste dag van de week is; WEEK() modus 3; gebruikt met %x
%W Naam weekdag (Sunday ..Saturday )
%w Dag van de week (0 =Zondag..6 =zaterdag)
%X Jaar voor de week waarin zondag de eerste dag van de week is, numeriek, vier cijfers; gebruikt met %V
%x Jaar voor de week, waarbij maandag de eerste dag van de week is, numeriek, vier cijfers; gebruikt met %v
%Y Jaar, numeriek, vier cijfers
%y Jaar, numeriek (twee cijfers)
%% Een letterlijke % karakter
%x x , voor elke “x ” niet hierboven vermeld

  1. Hoe methoden te testen die omgaan met SQLite-database in Android?

  2. SQL, hoe een tabelstructuur bij te werken

  3. Beperking in SQL controleren

  4. XML Server Optimalisatie van XML-prestaties