Zurück zu: SQL Tutorial
SQL Daten
Der schwierigste Teil bei der Arbeit mit Datumsangaben besteht darin, sicherzustellen, dass das Format des Datums, das Sie einfügen möchten, mit dem Format der Datumsspalte in der Datenbank übereinstimmt.
Solange Ihre Daten nur den Datumsteil enthalten, funktionieren Ihre Abfragen wie erwartet. Wenn jedoch ein Zeitteil enthalten ist, wird es komplizierter.
SQL Datumsdatentypen
MySQL verfügt über die folgenden Datentypen zum Speichern eines Datums oder eines Datums-/Uhrzeitwerts in der Datenbank:
DATE
– format YYYY-MM-DDDATETIME
– format: YYYY-MM-DD HH:MI:SSTIMESTAMP
– format: YYYY-MM-DD HH:MI:SSYEAR
– format YYYY oder YY
SQL Server verfügt über die folgenden Datentypen zum Speichern eines Datums oder eines Datums-/Uhrzeitwerts in der Datenbank:
DATE
– format YYYY-MM-DDDATETIME
– format: YYYY-MM-DD HH:MI:SSSMALLDATETIME
– format: YYYY-MM-DD HH:MI:SSTIMESTAMP
– format: eine eindeutige Nummer
Hinweis: Die Datumstypen werden für eine Spalte ausgewählt, wenn Sie eine neue Tabelle in Ihrer Datenbank erstellen!
SQL Arbeiten mit Datumsangaben
Schauen Sie sich die folgende Tabelle an:
Orders Table
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
2 | Camembert Pierrot | 2008-11-09 |
3 | Mozzarella di Giovanni | 2008-11-11 |
4 | Mascarpone Fabioli | 2008-10-29 |
Nun möchten wir aus der obigen Tabelle die Datensätze mit dem Bestelldatum „2008-11-11“ auswählen.
Wir verwenden die folgende SELECT
Anweisung:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
Der Ergebnissatz sieht folgendermaßen aus:
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
3 | Mozzarella di Giovanni | 2008-11-11 |
Hinweis: Zwei Datumsangaben können problemlos verglichen werden, wenn keine Zeitkomponente vorhanden ist!
Nehmen wir nun an, dass die Tabelle „Bestellungen“ folgendermaßen aussieht (beachten Sie die hinzugefügte Zeitkomponente in der Spalte „Bestelldatum“):
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 13:23:44 |
2 | Camembert Pierrot | 2008-11-09 15:45:21 |
3 | Mozzarella di Giovanni | 2008-11-11 11:12:01 |
4 | Mascarpone Fabioli | 2008-10-29 14:56:59 |
Wenn wir dieselbe SELECT
Anweisung wie oben verwenden:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
wir erhalten kein Ergebnis! Dies liegt daran, dass die Abfrage nur nach Daten ohne Zeitanteil sucht.
Tipp: Damit Ihre Abfragen einfach und leicht zu pflegen bleiben, verwenden Sie in Ihren Daten keine Zeitkomponenten, es sei denn, es ist unbedingt erforderlich!