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!