Datums- und Uhrzeitangaben sind äußerst frustrierende Datentypen, und SQL macht die Arbeit mit ihnen nicht einfacher als mit anderen Sprachen. Während Datum und Uhrzeit tatsächlich völlig unterschiedliche Datentypen sind, werden sie häufig zu einem Datetime-Datentyp zusammengeführt. SQL-Datums- und Uhrzeitangaben allein sind ziemlich einfach, obwohl sie eine spezielle Formatierung erfordern. Das Zusammenführen der beiden kann jedoch eine der schmerzhaftesten Aufgaben sein, denen Sie in Ihren frühen Jahren gegenüberstehen werden. Eine gute Faustregel ist, Zeit und Datum nur dann zusammen zu verwenden, wenn Sie dies unbedingt benötigen oder in Zukunft benötigen werden. Ich werde erklären, warum Datums- und Uhrzeitangaben die Dinge in nur einer Minute komplizieren. Zuerst, Schauen wir uns an, wie einfach das Leben ist, wenn Sie einfach mit Daten arbeiten.
Arbeiten mit SQL-Daten
Unsere Tabelle „Benutzer:
id | username | first | last | member_since |
---|---|---|---|---|
1 | ohBillNotAgain | Hillary | Clinton | 2011-12-25 |
2 | internetCreator | Al | Gore | 2011-12-8 |
3 | dontMessWithTexas | George | Bush | 2011-7-9 |
Let’s try to get all of our members before December 25, 2011.
Beispiel
SELECT *FROM UsersWHERE member_since < '2011-12-25'
Ergebnis
id | Benutzername | erster | letzter | member_since |
---|---|---|---|---|
2 | internetCreator | Al | Gore | 2011-12-8 |
3 | dontMessWithTexas | George | Busch | 2011-7-9 |
Okay, wir sagten VOR Dezember 25, 2011, was bedeutet, dass die arme Hillary nicht enthalten ist, weil sie an diesem Tag ist. Al hat den Schnitt kaum geschafft, aber der alte George war weit vor unserem Stichtag. Ich nehme an, wir sollten eigentlich darüber reden, was passiert ist. Bis zu WHERE member_since < ‚2011-12-25‘ wissen wir, was wir getan haben. Wir könnten wahrscheinlich erraten, was hier los ist, aber ich werde das tote Pferd schlagen. Wir überprüfen unsere member_since Spalte, um zu sehen, ob es kleiner ist als, <, unser Datum, das in einfachen Anführungszeichen als ‚2011-12-25‘ geschrieben wurde. Wenn Sie nach Hilfe bei Datumsangaben googeln, wird diese Syntax häufig als ‚YYYY-MM-DD‘ bezeichnet, wobei Y für Jahr, M für Monat und D für Tag steht. Jede Wiederholung ist ein Symbol für einen leeren Zeichenraum für dieses Element. Sie möchten also nur 2 Ziffern für den Monat, weil das Sinn macht, und vielleicht interessieren Sie sich nicht für die ersten 2 Zeichen des Jahres. Stattdessen schreiben Sie einfach YY, um 11 zu erhalten. Einfach genug, auf die wunderbaren DateTimes
Mit DATETIME in SQL
Unsere neue „Users“ -Tabelle:
id | username | first | last | last_login |
---|---|---|---|---|
1 | ohBillNotAgain | Hillary | Clinton | 2011-12-24 12:59:15 |
2 | internetCreator | Al | Gore | 2011-12-24 11:53:25 |
3 | dontMessWithTexas | George | Bush | 2011-12-24 16:24:17 |
Nun versuchen wir, alle unsere Mitglieder, die sich vor dem 24.Dezember 2011 um 1:00 Uhr angemeldet haben, zu erreichen.
Beispiel
SELECT * FROM UsersWHERE last_login < '2011-12-24 13:00:00'
Ergebnis
id | Benutzername | erster | letzter | last_login |
---|---|---|---|---|
1 | ohBillNotAgain | Hillary | Clinton | 2011-12-24 12:59:15 |
2 | Internet-Schöpfer | Al | Gore | 24.12.2011, 11:53 Uhr:25 |
Armer George … Okay, genau die gleiche Syntax wie die letzte, außer dass wir den Spaltennamen ersetzt und eine DATETIME-Zeichenfolge zum Vergleich verwendet haben. Der Datentyp DATETIME enthält dieselben Elemente wie der Datentyp DATE plus eine Zeitzeichenfolge. Häufig als ‚YYYY-MM-DD HH: MM: SS‘ bezeichnet, erstellen wir in einfachen Anführungszeichen und mit einem Leerzeichen, das die Datumszeichenfolge von der Zeitzeichenfolge trennt, unsere Datumszeichenfolge zum Vergleich. Hillary und Al machen beide den Schnitt, weil sie sich vor dem 2011-12-24 13:00 angemeldet haben:00′ DATUM / UHRZEIT abschneiden. Hier ist es viel einfacher, als es in der Praxis aussieht. Das liegt daran, dass wir die DATETIME-Zeichenfolge von Hand eingeben. SQL hat ein paar Datumsfunktionen, mit denen Sie herumspielen können, mit denen Sie unsere Zeichenfolge ersetzen können:
Wichtige SQL-Datumsfunktionen
Hinweis: SQL-Datumsfunktionen unterscheiden sich stark zwischen SQL-Versionen. Dies sind MySQL.
- CURDATE() – ruft das aktuelle Datum ab
- CURTIME() – ruft die aktuelle Uhrzeit ab
- NOW() – ruft Datum und Uhrzeit ab (im DATETIME-Format)
Wenn Sie MySQL nicht verwenden, sollten Sie einen Wechsel in Betracht ziehen. Nur ein Scherz, aber keine Sorge, eine einfache Abfrage von Google hilft Ihnen dabei, die richtigen SQL-Funktionen für Ihre SQL-Datenbank zu finden.