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!