SQL Date funktion

SQL Dato

Når vi håndterer datoer, er det måske den mest svære opgave at sikre, at formatet på den indsatte dato matcher formatet på dato kolonnen i databasen.

Hvis data kun indeholder datoer, vil spørgsmålet køre uden problemer. Men hvis det involverer tid, bliver det lidt mere komplekst.

Før vi diskuterer kompleksiteten af datoforespørgsler, lad os først se på de vigtigste indbyggede dato-behandlingsfunktioner.

MySQL Date funktioner

Følgende tabel viser de vigtigste indbyggede datoer-funktioner i MySQL:

Funktion Beskrivelse
NOW() Returnerer den nuværende dato og tid
CURDATE() Returnerer den nuværende dato
CURTIME() Returnerer den nuværende tid
DATE() Udtrækker dato eller dato/tidsudtryks datodel
EXTRACT() Returnerer en enkelt del af dato/tid
DATE_ADD() Tilføj en specificeret tidsinterval til en dato
DATE_SUB() Træk en specificeret tidsinterval fra en dato
DATEDIFF() Returnerer antallet af dage mellem to datoer
DATE_FORMAT() Vis datoer/tider i forskellige formater

SQL Server Date funktioner

Følgende tabel viser de vigtigste indbyggede datoer-funktioner i SQL Server:

Funktion Beskrivelse
GETDATE() Returnerer den nuværende dato og tid
DATEPART() Returnerer en enkelt del af dato/tid
DATEADD() Tilføj eller træk en specificeret tidsinterval fra en dato
DATEDIFF() Returnerer tiden mellem to datoer
CONVERT() Vis datoer/tider i forskellige formater

SQL Date dataType

MySQL bruger følgende dataTyper til at gemme datoer eller dato/tidsværdier i databasen:

  • DATE - Format YYYY-MM-DD
  • DATETIME - Format: YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - Format: YYYY-MM-DD HH:MM:SS
  • YEAR - Format YYYY eller YY

SQL Server bruger følgende datatyper til at gemme datoer eller dato/tidsværdier i databasen:

  • DATE - Format YYYY-MM-DD
  • DATETIME - Format: YYYY-MM-DD HH:MM:SS
  • SMALLDATETIME - Format: YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - Format: Unik nummer

SQL dato håndtering

Hvis det ikke involverer tidsdelen, kan vi nemt sammenligne to datoer!

Lad os antage, at vi har følgende "Orders" tabel:

OrderId ProduktNavn OrderDate
1 computere 2008-12-26
2 skrivere 2008-12-26
3 telegrafer 2008-11-12
4 telefon 2008-10-19

Nu ønsker vi at vælge poster fra tabellen ovenfor med OrderDate som "2008-12-26".

Vi bruger følgende SELECT sætning:

SELECT * FROM Orders WHERE OrderDate='2008-12-26'

Resultat集:

OrderId ProduktNavn OrderDate
1 computere 2008-12-26
3 telegrafer 2008-12-26

Lad os antage, at "Orders" ser sådan ud (bemærk tidsdelen af "OrderDate" kolonnen):

OrderId ProduktNavn OrderDate
1 computere 2008-12-26 16:23:55
2 skrivere 2008-12-26 10:45:26
3 telegrafer 2008-11-12 14:12:08
4 telefon 2008-10-19 12:56:10

Hvis vi bruger den ovennævnte SELECT sætning:

SELECT * FROM Orders WHERE OrderDate='2008-12-26'

Så får vi ikke nogen resultater. Dette skyldes, at forespørgslen ikke indeholder tidsdelen af datoen.

Tip:Hvis du ønsker, at din forespørgsel skal være simpel og lettere at vedligeholde, så lad ikke bruge tidsdelen af datoen!