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!