sql >> Database teknologi >  >> RDS >> Mysql

STR_TO_DATE() Eksempler – MySQL

MySQL STR_TO_DATE() funktionen giver dig mulighed for at bygge en datoværdi ud fra de forskellige datodele.

Når du bruger denne funktion, angiver du en streng af de forskellige datodele og et andet argument, der specificerer det format, som datoen er angivet i.

Syntaks

Syntaksen ser sådan ud:

STR_TO_DATE(str,format)

Hvor str er strengen, der indeholder datodelene, og format er formatstrengen (bestemmer, hvordan str argumentet er formateret).

Eksempel 1 – Grundlæggende brug

Her er et eksempel til at demonstrere.

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

Resultat:

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

Eksempel 2 – Rækkefølgen af ​​formatstrengen

Formatstrengen skal matche værdierne i datostrengen. Du kan f.eks. ikke gøre følgende:

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

Resultat:

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

Grunden til at dette ikke virkede, er fordi vi forsøger at tvinge måneden til at have en værdi på 31, men der er kun 12 måneder i et år. Så dette ville resultere i en ugyldig datoværdi.

Derfor skal du være forsigtig, når du bruger denne funktion, især når dagsværdien er 12 eller mindre, ellers kan du ende med, at måneds- og dagværdierne bliver byttet rundt uden at bemærke det.

For eksempel sådan her:

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 dette tilfælde får vi ikke en NULL-værdi som i det foregående eksempel, fordi både 07 og 12 kunne være enten en dag eller en måned.

Eksempel 3 – Matchning af formatstrengen

Selvom formatstrengen er i den rigtige rækkefølge, skal den også matche formatet på datodelene, der er angivet i det første argument.

Så for eksempel kan du ikke gøre dette:

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

Resultat:

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

I dette tilfælde skal vi gøre noget som dette:

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

Resultat:

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

Eksempel 4 – Brug af GET_FORMAT()-funktionen

Du kan også videregive GET_FORMAT() fungere som det andet argument.

Her er et eksempel.

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 |+---------------------------------------------------- ----------+

Eksempel 5 – Dato-tidsværdier

Du kan også bruge denne funktion til at returnere en værdi for tid eller dato.

Her er et eksempel, der bruger en datetime-værdi.

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 |+------------------------------------------------ ------------------+

Formatstrengspecifikationer

Følgende specifikationer kan bruges i formatstrengen. Ud over disse kan du også bruge bogstavelige strenge i formatstrengen.

Specifier Beskrivelse
%a Forkortet ugedagsnavn (Sun ..Sat )
%b Forkortet månedsnavn (Jan ..Dec )
%c Måned, numerisk (0 ..12 )
%D Dag i måneden med engelsk suffiks (0th , 1st , 2nd , 3rd , …)
%d Dag i måneden, numerisk (00 ..31 )
%e Dag i måneden, numerisk (0 ..31 )
%f Mikrosekunder (000000 ..999999 )
%H Time (00 ..23 )
%h Time (01 ..12 )
%I Time (01 ..12 )
%i Minutter, numerisk (00 ..59 )
%j Dag i året (001 ..366 )
%k Time (0 ..23 )
%l Time (1 ..12 )
%M Månedens navn (January ..December )
%m Måned, numerisk (00 ..12 )
%p AM eller PM
%r Tid, 12 timer (hh:mm:ss efterfulgt af AM eller PM )
%S Sekunder (00 ..59 )
%s Sekunder (00 ..59 )
%T Tid, 24 timer (hh:mm:ss )
%U Uge (00 ..53 ), hvor søndag er den første dag i ugen; WEEK() tilstand 0
%u Uge (00 ..53 ), hvor mandag er den første dag i ugen; WEEK() tilstand 1
%V Uge (01 ..53 ), hvor søndag er den første dag i ugen; WEEK() tilstand 2; brugt med %X
%v Uge (01 ..53 ), hvor mandag er den første dag i ugen; WEEK() tilstand 3; brugt med %x
%W Ugedagsnavn (Sunday ..Saturday )
%w Ugedag (0 =søndag..6 =lørdag)
%X År for ugen, hvor søndag er den første dag i ugen, numerisk, fire cifre; bruges med %V
%x År for ugen, hvor mandag er den første dag i ugen, numerisk, fire cifre; brugt med %v
%Y Årtal, numerisk, fire cifre
%y År, numerisk (to cifre)
%% En bogstavelig % tegn
%x x , for enhver "x ” ikke angivet ovenfor

  1. Fuld forståelse for PDO ATTR_PERSISTENT

  2. Opdater forespørgsel ved hjælp af Subquery i SQL Server

  3. Pandas opdatering sql

  4. Kan ikke finde PostgreSQL-klientbiblioteket (libpq)