SQLDatefunktion
SQL Datum
När vi hanterar datum är den svåraste uppgiften att säkerställa att det format som datumet är inskrivet matchar formatet för datumkolumnen i databasen.
När data endast innehåller datumdelen kommer frågor att lösa sig utan problem. Men när det gäller tid blir situationen något mer komplex.
Innan vi diskuterar komplexiteten med datumfrågor, låt oss först titta på de viktigaste inbyggda datumhanteringsfunktionerna.
Funktion
Beskrivning
Funktion | Beskrivning |
---|---|
NOW() | Returnera nuvarande datum och tid |
CURDATE() | Returnera nuvarande datum |
CURTIME() | Returnera nuvarande tid |
DATE() | Extrahera datumdelen från en datum/datum/tid-expression |
EXTRACT() | Returnera enskilda delar av datum/tid enligt format |
DATE_ADD() | Lägg till en specificerad tidsintervall till datum |
DATE_SUB() | Subtrahera en specificerad tidsintervall från datum |
DATEDIFF() | Returnera antalet dagar mellan två datum |
DATE_FORMAT() | Visa datum/tid i olika format |
SQL Server Date-funktioner
Följande tabell visar de viktigaste inbyggda datumfunktionerna i SQL Server:
Funktion | Beskrivning |
---|---|
GETDATE() | Returnera nuvarande datum och tid |
DATEPART() | Returnera enskilda delar av datum/tid |
DATEADD() | Lägg till eller subtrahera en specificerad tidsintervall från datum |
DATEDIFF() | Returnera tiden mellan två datum |
CONVERT() | Visa datum/tid i olika format |
SQL Date-datatyp
MySQL använder följande datatyper för att lagra datum eller datum/tidvärden 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 använder följande datatyper för att lagra datum eller datum/tidvärden 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 Datumhantering
Om det inte gäller tidsdelen kan vi enkelt jämföra två datum!
Anta att vi har följande "Orders"-tabell:
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 |
2 | printer | 2008-12-26 |
3 | electrograph | 2008-11-12 |
4 | telephone | 2008-10-19 |
Nu vill vi välja poster från tabellen ovan där OrderDate är "2008-12-26".
Vi använder följande SELECT-sats:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
Resultatuppsättning:
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 |
3 | electrograph | 2008-12-26 |
Låt oss anta att "Orders"-tabellen liknar följande (observera tidsdelen i "OrderDate"-kolumnen):
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 16:23:55 |
2 | printer | 2008-12-26 10:45:26 |
3 | electrograph | 2008-11-12 14:12:08 |
4 | telephone | 2008-10-19 12:56:10 |
Om vi använder följande SELECT-sats:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
Då får vi inga resultat. Detta beror på att frågan inte innehåller tidsdelen av datumet.
Tips:Om du vill att frågan ska vara enkel och lätt att underhålla, använd inte tidsdelen i datum!