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

MySQL datoformat - hvad du behøver at vide

MySQL er afledt af 'My' - medstifterens datter og SQL-Structured Query Language. Det er en open source-type relationel databasestyringssystem. Dette relationelle databasesystem hjælper med at organisere data i relaterbare tabeller og muliggør derved strukturelle relationer mellem forskellige datasæt.

MySQL-dato er en af ​​de tidsmæssige datatyper, der kan administrere dataværdier sammen med andre datatyper såsom numeriske datatyper, strengdatatyper, booleske datatyper, dato og klokkeslæt og geografiske datatyper.

Funktionen DATE_FORMAT() bruges i MySQL til at formatere dato ved hjælp af den angivne formatværdi. For eksempel, hvis en dato er angivet, vil funktionen formatere den i forhold til de angivne parametre.

MySQL-datoformatsyntaks

DATE_FORMAT(dato, format)

Syntaksfunktionen ovenfor accepterer to parametre som vist nedenfor:

  • dato – Den angiver datoen, der skal formateres
  • format – Det definerer formatet, der skal bruges til at formatere datoen

Nedenfor er en liste over formater, som du bør sætte dig ind i, når du beskæftiger dig med datofunktionen.

  • %a – dette format viser ugedagens navn. det er begrænset fra søndag til lørdag.
  • %b – dette formatsymbol viser månedens navn. det er begrænset fra januar til december.
  • %c – dette formatsymbol angiver det numeriske månedsnavn. den er begrænset fra 0 til 12
  • %D – dette formatsymbol viser den numeriske værdi for dagen i måneden efterfulgt af et suffiks såsom 1. eller 2..
  • %e – dette formatsymbol viser den numeriske værdi for dagen i måneden. den er begrænset fra 0 til 31
  • %f – dette formatsymbol viser mikrosekunder. den er begrænset fra 000000 til 999999.
  • %H – dette formatsymbol angiver timen. Det er begrænset fra 00 til 23.
  • %i – dette formatsymbol viser minutterne. den er begrænset fra 00 til 59.
  • %j – dette formatsymbol viser dagen på året. den er begrænset fra 001 til 366.
  • %M – dette formatsymbol angiver månedens navn. det er begrænset fra januar til december
  • %p – dette formatsymbol viser PM eller AM
  • %S – dette formatsymbol viser sekunder. den er begrænset fra 00 til 59
  • %U – dette formatsymbol viser hverdage, hvor søndag er den første dag. Det er begrænset fra 00 til 53.
  • %W – dette formatsymbol viser ugedagene fra søndag til lørdag
  • %Y – dette formatsymbol viser årets numeriske værdi som et 4-cifret tal

Formaterne ovenfor returnerer en formateret dato.

Eksempel 1: 

For at udtrække eller vise året fra den aktuelle dato, skal vi udføre følgende kommandolinje:

VÆLG DATE_FORMAT("2021-09-25", "%Y");
Output:
Eksempel 2:

Udtræk  månedsnavn fra en given dato som vist nedenfor:

25-09-2021

VÆLG DATE_FORMAT("2021-09-25", "%M");
Output:
Eksempel 3:

Uddrag timer og minutter fra datoen angivet nedenfor:

25-09-2021

VÆLG DATE_FORMAT("2021-09-25 10:20:23", "%H %i");
Output:
Eksempel 4: 

Udtræk dagen i måneden numerisk fra den dato, der er angivet nedenfor:

25-09-2021

VÆLG DATE_FORMAT("2021-09-25", "%D");
Output:
Eksempel 5:

Udtræk henholdsvis måned, dag og år fra den dato, der er angivet heri:

25-09-2021

VÆLG DATE_FORMAT("2021-09-25", "%M %d %Y");
Output:

MySQL-dato bruger formatet; åååå-mm-dd at gemme en dataværdi, og dette format er normalt løst uden tilladelse til at ændre det overhovedet. Til opbevaringskravene til MySQL vil den bruge omkring 3 bytes for at gemme en enkelt datoværdi og har en datoværdi, der spænder fra 1000-01-01 til 9999-12-31. Derfor er en bruger, der skal gemme et datointerval uden for disse parametre, kun mulig gennem heltal. Denne proces er dog ret belastende, og den ville kræve, at du oprettede tre kolonner, en for året, en anden for måneden og den sidste for dagen.

Dette anbefales ofte ikke at prøve ved de fleste lejligheder, hvis du ønsker at ændre datoformatet. Deaktivering af 'streng tilstand' vil hjælpe med at konvertere enhver ugyldig dato til 'nul datoværdi'. En ugyldig dato i dette tilfælde ville ikke følge standard MySQL-datoformatet, for eksempel 2020-01-24. Dette ville også skabe et behov for at udvikle 'lagrede funktioner', som ville reproducere MySQL's nyoprettede datofunktioner.

MySQL-datoværdier med 2-cifrede årstal

MySQL accepterer kun tocifrede årstal under følgende betingelser:

  1. Årsværdier mellem 00-69 konverteres til 2000-2069
  2. Årsværdier mellem 70-79 er konverteret til 1970-1999

Det er dog tilrådeligt at undgå at bruge datoværdier med to cifre, da det er tvetydigt.
Her er et eksempel. En tabel oprettes med navnet 'personer' og har  'datatyper'-kolonner:

OPRET TABEL, HVIS IKKE FINDER personer ( JOB_ID heltal IKKE NULL UNIK PRIMÆR NØGLE, JOB_TITLE varchar(35) IKKE NULL DEFAULT ' ', MIN_SALARY decimal(6,0) DEFAULT 8000, MAX_SALARY decimal(6,0)ENGFAULT =InnoDB;

Følgende funktion vil 'indsætte en række' i 'personer'-tabellen:

INSERT INTO people(JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY)
VALUES('5', 'Foss', '2000', '2000');

Nu 'Forespørg dataene' fra 'personer'-tabellen

VÆLG * FRA personer;

Efter at have kørt kommandoerne ovenfor, vil det nu være muligt at bruge den 2-cifrede årstalsindstilling til at indsætte data i 'personer'-tabellen:

INSERT INTO people(JOB_ID,JOB_TITLE,MIN_SALARY,MAX_SALARY,BIRTH)
VALUES('6', 'FOSSLINUX', '200', '2000', '01-09-01');

'01' er blevet brugt i første række som årstal, der falder mellem (interval 00-69). MySQL vil derefter konvertere det til 2001, mens i anden række falder brugen af ​​'84' ​​i området (70-99), og MySQL konverterer det til 1984.

MySQL-datofunktioner

MySQL leverer og bruger ofte flere datofunktioner, som hjælper brugere med at manipulere deres data mere effektivt og hurtigere.
For eksempel hjælper brugen af ​​'NU( )'-funktionen med at hente den aktuelle dato og klokkeslæt:

VÆLG NU( );

For kun at få datodelen af ​​en 'DATETIME', skal du kun bruge 'DATE( )'-funktionen:

VÆLG DATO(NU( ) );

For at få den aktuelle systemdato, brug CURDATE ( ):

SELECT CURDATE();

Funktionen 'DATE_FORMAT' kan bruges til at formatere datoværdien til dette format; mm/dd/åååå. Den bruger datoformatmønsteret %m/%d/%Y

SELECT DATE_FORMAT('2021-09-25 22:23:00', '%W %D %M %Y');

Hvis du vil beregne antallet af dage mellem to datoværdier, skal du bruge 'DATEDIFF'-funktionen:

mysql> VÆLG DATEDIFF('2020-09-25', '2021-09-25') dage;

Brug af 'DATE_ADD'-funktionen hjælper en med at tilføje flere år, måneder, uger eller dage:

SELECT DATE_ADD('2021-09-25', INTERVAL 31 DAY);

Funktionen 'DATE_SUB' kan også bruges til at trække et datointerval fra:

SELECT DATE_SUB("2021-09-25", INTERVAL 10 DAY);

Brug af den tilsvarende funktion med hensyn til dato, måned, kvartal og år vil hjælpe dig med at få den nøjagtige dag, måned osv. for en datoværdi som vist nedenfor:

SELECT DAY('2000-12-31') day,
MONTH( '2000-12-31') month
QUARTER('2000-12-31') quarter,
ÅR('2000-12-31') år

Dag ǀ måned ǀ kvartal ǀ år ǀ
31 ǀ 12 ǀ 4 ǀ 2000ǀ

Ugentlig information om relaterede funktioner kan tilgås via:

VÆLG
WEEKDAY('2000-12-31') ugedag,
WEEK( '2000-12-31') uge,
WEEKOFTHEYEAR('2000-12-31') uge i året;

ugedag ǀ uge ǀ uge i året ǀ
6 ǀ 53 ǀ 52 ǀ

Ugefunktionen returnerer altid et ugenummer med et nul-baseret indeks. Du bliver nødt til at sende et andet argument eller sende et '0' for at forhindre dette i at ske. Hvis du passerer '1', returneres ugenummeret '1-indekseret'.

WEEKDAY('2000-12-31') weekday,
WEEK( '2000-12-31', 1) week,
WEEKOFTHEYEAR('2000-12-31') weekofyear;

ugedag ǀ uge ǀ uge i året ǀ
6 ǀ 52 ǀ 52 ǀ

Konklusion

Dette er en kort artikeltutorial, der dækker emnet MySQL-datoformat. Vi håber, at alle de aspekter, du ønskede at blive fortrolig med på MySQL-datoformater, er blevet dækket. Husk at give en thumbs up via kommentarfeltet, hvis du finder artiklen nyttig.


  1. Kan ikke oprette forbindelse til server - En netværksrelateret eller instansspecifik fejl

  2. Sådan fungerer BIT_LENGTH() i MariaDB

  3. ALTER TABLE for at tilføje en sammensat primærnøgle

  4. Sådan indsætter du JSON i en tabel i SQL Server