sql >> Databasteknik >  >> RDS >> Mysql

STR_TO_DATE() Exempel – MySQL

MySQL STR_TO_DATE() funktionen låter dig bygga ett datumvärde från de olika datumdelarna.

När du använder den här funktionen tillhandahåller du en sträng av de olika datumdelarna och ett andra argument som anger formatet som datumet tillhandahålls i.

Syntax

Syntaxen ser ut så här:

STR_TO_DATE(str,format)

Där str är strängen som innehåller datumdelarna, och format är formatsträngen (bestämmer hur str argumentet är formaterat).

Exempel 1 – Grundläggande användning

Här är ett exempel att visa.

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

Resultat:

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

Exempel 2 – Ordningsföljd för formatsträngen

Formatsträngen måste matcha värdena som anges i datumsträngen. Du kan till exempel inte göra följande:

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

Resultat:

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

Anledningen till att detta inte fungerade är för att vi försöker tvinga månaden att ha ett värde på 31, men det är bara 12 månader på ett år. Så detta skulle resultera i ett ogiltigt datumvärde.

Därför måste du vara försiktig när du använder den här funktionen, särskilt när dagvärdet är 12 eller lägre, annars kan du sluta med att månads- och dagvärdena byts runt utan att du märker det.

Till exempel, så här:

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

Resultat:

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

I det här fallet får vi inte ett NULL-värde som i föregående exempel, eftersom både 07 och 12 kan vara antingen en dag eller en månad.

Exempel 3 – Matcha formatsträngen

Även om formatsträngen är i rätt ordning, måste den också matcha formatet för datumdelarna i det första argumentet.

Så till exempel kan du inte göra detta:

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

Resultat:

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

I det här fallet skulle vi behöva göra något så här:

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

Resultat:

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

Exempel 4 – Använda funktionen GET_FORMAT()

Du kan också skicka GET_FORMAT() fungerar som det andra argumentet.

Här är ett exempel.

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

Resultat:

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

Exempel 5 – Datetime-värden

Du kan också använda den här funktionen för att returnera ett värde för tid eller datum.

Här är ett exempel som använder ett datetime-värde.

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

Resultat:

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

Formatsträngsspecifikationer

Följande specifikationer kan användas i formatsträngen. Utöver dessa kan du också använda bokstavliga strängar i formatsträngen.

Specifierare Beskrivning
%a Förkortat veckodagsnamn (Sun ..Sat )
%b Förkortat månadsnamn (Jan ..Dec )
%c Månad, numerisk (0 ..12 )
%D Dag i månaden med engelskt suffix (0th , 1st , 2nd , 3rd , …)
%d Dag i månaden, numerisk (00 ..31 )
%e Dag i månaden, numerisk (0 ..31 )
%f Mikrosekunder (000000 ..999999 )
%H Timme (00 ..23 )
%h Timme (01 ..12 )
%I Timme (01 ..12 )
%i Minuter, numeriska (00 ..59 )
%j Dag på året (001 ..366 )
%k Timme (0 ..23 )
%l Timme (1 ..12 )
%M Månadsnamn (January ..December )
%m Månad, numerisk (00 ..12 )
%p AM eller PM
%r Tid, 12 timmar (hh:mm:ss följt av AM eller PM )
%S Sekunder (00 ..59 )
%s Sekunder (00 ..59 )
%T Tid, 24 timmar (hh:mm:ss )
%U Vecka (00 ..53 ), där söndag är den första dagen i veckan; WEEK() läge 0
%u Vecka (00 ..53 ), där måndag är den första dagen i veckan; WEEK() läge 1
%V Vecka (01 ..53 ), där söndag är den första dagen i veckan; WEEK() läge 2; används med %X
%v Vecka (01 ..53 ), där måndag är den första dagen i veckan; WEEK() läge 3; används med %x
%W Veckodagens namn (Sunday ..Saturday )
%w Veckodag (0 =Söndag..6 =lördag)
%X År för veckan där söndag är den första dagen i veckan, numerisk, fyra siffror; används med %V
%x Veckans år, där måndag är den första dagen i veckan, numeriskt, fyra siffror; används med %v
%Y Årtal, siffror, fyra siffror
%y Årtal, numeriskt (två siffror)
%% En bokstavlig % tecken
%x x , för någon "x ” inte listad ovan

  1. Hur skapar jag en lagrad procedur som valfritt söker efter kolumner?

  2. docker postgres pgadmin lokal anslutning

  3. det går inte att skapa autoinkrementerande primärnyckel med flask-sqlalchemy

  4. Hur man ersätter en del av en sträng i SQL