SQL Date-funktioner og GETDATE forklaret med syntakseksempler

Der er 61 datofunktioner defineret i MySQL. Bare rolig, vi gennemgår dem ikke alle her. Denne guide giver dig en introduktion til nogle af de almindelige, og tilstrækkelig eksponering til, at du komfortabelt kan udforske alene.

Vi vil dække:

  • Få den aktuelle dato
  • Dato matematik
  • Datoer i et hvor eller har klausul

Få den aktuelle dato

At få datoen fra systemet kan være meget praktisk til behandling af data ved hjælp af SQL.

-- current date select now(), sysdate(), current_date(), current_time(), -- date and time from the system on execution dayofyear(now()) as NumDaysSoFarThisYr, EXTRACT(YEAR FROM now()) as theYearPart, EXTRACT(YEAR_MONTH FROM now()) as theYrMonPart, date_format(now(), '%W %M %Y') as oneOfManyFormats; ; 

I SQL-forespørgsel ser vi følgende:

  • De første to kolonner i resultatet er to måder at få de samme oplysninger på: datoen på systemet på det tidspunkt, hvor SQL udføres.
  • De næste to kolonner udskærer kun dato og klokkeslæt for systemdatoen.
  • Den næste præsenterer ”dagsnummeret” for systemdatoen i år. Du vil bemærke, at dette er en dag mere end matematikken vist i det næste eksempel.
  • De næste to udtrækker bare året og derefter både året og måneden
  • Sidst, men ikke mindst, er der et enkelt eksempel på en af ​​de mange måder at formatere disse datoer på.

Du kan også bruge GETDATE () for at få den aktuelle dato.

Dato matematik

select now(), current_date(), datediff(now(),'2017-01-01') as daysThisYear, subdate(current_date(), interval 150 day) as '150DaysAgo', adddate(now(), interval 7 day) as dateInA_Week -- date in a week ; 
billede-1

Her ser vi:

  • De første to kolonner er kun systemets dato og tidspunkt for reference.
  • Den anden kolonne er datoforskellen (dateret) mellem den første januar 2017 og systemdatoen.
  • De sidste to kolonner er eksempler på fratrækning og tilføjelse af datoer.

I et hvor eller har klausul

Her er to eksempler på brug af datematematik i en hvor-klausul:

select * from student; - to show the current data being used for the example select * from student where recordCreated < '2017-01-01'; select * from student where recordCreated < subdate(current_date(), interval 225 day); 

Med hensyn til HAVING-delen: Husk, det meste af WHERE-klausullogikken fungerer også i HAVING-klausulen for en GROUP BY. Forskellen mellem de to er, at WHERE-klausulen kører mod de fulde data, og HAVING kører mod de data, der er samlet af GROUP BY-klausulen.

Som med alle disse ting er der MEGET MERE ved dem end hvad der er i denne introduktionsvejledning. Jeg håber, at dette i det mindste giver dig nok til at komme i gang. Se vejledningen til din databaseadministrator og have det sjovt selv at prøve forskellige muligheder.