SQL Arbeiten mit Datumsangaben
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 es jedoch um einen Zeitabschnitt geht, 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 JJJJ-MM-TT -
DATETIME
- Format: JJJJ-MM-TT HH:MI:SS TIMESTAMP
- Format: JJJJ-MM-TT HH:MI:SS-
YEAR
- 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 JJJJ-MM-TT -
DATETIME
- Format: JJJJ-MM-TT HH:MI:SS -
SMALLDATETIME
- Format: JJJJ-MM-TT HH:MI:SS TIMESTAMP
- 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
Sehen Sie sich die folgende Tabelle an:
Bestelltabelle
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 |
Jetzt wollen wir die Datensätze mit einem OrderDate von „2008-11-11“ aus der obigen Tabelle auswählen.
Wir verwenden die folgende SELECT
Anweisung:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
Die Ergebnismenge sieht folgendermaßen aus:
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
3 | Mozzarella di Giovanni | 2008-11-11 |
Hinweis: Zwei Daten können leicht verglichen werden, wenn es keine Zeitkomponente gibt!
Nehmen Sie nun an, dass die Tabelle „Bestellungen“ so 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
Aussage wie oben verwenden:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
wir werden kein Ergebnis bekommen! Dies liegt daran, dass die Abfrage nur nach Datumsangaben ohne Zeitanteil sucht.
Tipp: Um Ihre Abfragen einfach und pflegeleicht zu halten, verwenden Sie keine Zeitkomponenten in Ihren Daten, es sei denn, Sie müssen!