SQL Date Function

SQL Datum

De moeilijkste taak bij het verwerken van datums is waarschijnlijk ervoor te zorgen dat het ingevoerde datumformaat overeenkomt met het formaat van het datumveld in de database.

Als de data alleen de datumdeel bevat, zal de query geen probleem opleveren. Maar als het om tijd gaat, wordt het een beetje complex.

Voordat we de complexiteit van datumzoeken bespreken, laten we eerst de belangrijkste ingebouwde datumverwerkingsfuncties bekijken.

MySQL Date functies

De tabel hieronder lijst de belangrijkste ingebouwde datumfuncties in MySQL op:

Functie Beschrijving
NOW() Huidige datum en tijd retourneren
CURDATE() Huidige datum retourneren
CURTIME() Huidige tijd retourneren
DATE() Datumdeel van een datum of datum/tijdexpressie extraheren
EXTRACT() Enkele delen van datum/tijd retourneren
DATE_ADD() Specifieke tijdintervallen aan een datum toevoegen
DATE_SUB() Specifieke tijdintervallen van een datum aftrekken
DATEDIFF() Aantal dagen tussen twee datums berekenen
DATE_FORMAT() Datum/tijd weergeven in verschillende formaten

SQL Server Date functies

De tabel hieronder lijst de belangrijkste ingebouwde datumfuncties in SQL Server op:

Functie Beschrijving
GETDATE() Huidige datum en tijd retourneren
DATEPART() Enkele delen van datum/tijd retourneren
DATEADD() Specifieke tijdintervallen toevoegen of afnemen van een datum
DATEDIFF() Tijd tussen twee datums berekenen
CONVERT() Datum/tijd weergeven in verschillende formaten

SQL Date datatype

MySQL gebruikt de volgende datatypes om datum- of datum/tijdwaarden op te slaan in een database:

  • DATE - Formaat YYYY-MM-DD
  • DATETIME - Formaat: YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - Formaat: YYYY-MM-DD HH:MM:SS
  • YEAR - Formaat YYYY of YY

SQL Server gebruikt de volgende datatypes om datums of datum/tijdwaarden op te slaan in de database:

  • DATE - Formaat YYYY-MM-DD
  • DATETIME - Formaat: YYYY-MM-DD HH:MM:SS
  • SMALLDATETIME - Formaat: YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - Formaat: Unieke nummers

SQL datumverwerking

Als het geen tijdgedeelte betreft, kunnen we de twee datums gemakkelijk vergelijken!

Stel dat we de volgende "Orders"-tabel hebben:

OrderId ProductName OrderDate
1 computer 2008-12-26
2 printer 2008-12-26
3 electrograph 2008-11-12
4 telephone 2008-10-19

Nu willen we de records met OrderDate "2008-12-26" uit de tabel kiezen.

We gebruiken de volgende SELECT-statement:

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

Resultaten:

OrderId ProductName OrderDate
1 computer 2008-12-26
3 electrograph 2008-12-26

Nu stel we dat de "Orders"-klasse er zo uitziet (merk op het tijdgedeelte in de "OrderDate"-kolom):

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

Als we de bovenstaande SELECT-statement gebruiken:

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

Dan krijgen we geen resultaat. Dit komt omdat de query geen tijdgedeelte van de datum bevat.

Tip:Als je de query eenvoudig en gemakkelijk onderhoudbaar wilt maken, gebruik dan geen tijdgedeelte in de datum!