Ich habe eine Frage: Ist es möglich, aus einer MySQL-Datenbank auszuwählen, indem eine DATE-Zeichenfolge "2010-04-29" mit Zeichenfolgen verglichen wird, die als DATETIME (2010-04-29 10:00) gespeichert sind?
Ich habe eine Datumsauswahl, die Daten filtert, und ich möchte die Tabelle nach dem Feld DATETIME wie folgt abfragen:
SELECT * FROM `calendar` WHERE startTime = '2010-04-29'"
... und ich möchte die Zeile mit dem DATETIME-Wert "2010-04-29 10:00" erhalten.
Irgendwelche Vorschläge? Vielen Dank.
mysql
datetime
comparison
Manny Calavera
quelle
quelle
startTime
indiziert ist.Wenn Sie alle Zeilen auswählen möchten, in denen der DATE-Teil einer DATETIME-Spalte mit einem bestimmten Literal übereinstimmt, können Sie dies nicht folgendermaßen tun:
weil MySQL ein DATE und ein DATETIME nicht direkt vergleichen kann. Was MySQL macht, erweitert das angegebene DATE-Literal um die Zeit '00: 00: 00 '. So wird Ihr Zustand
Sicher nicht was du willst!
Die Bedingung ist ein Bereich und sollte daher als Bereich angegeben werden. Es gibt mehrere Möglichkeiten:
Es gibt eine winzige Möglichkeit, dass die erste falsch ist - wenn Ihre DATETIME-Spalte eine Auflösung von weniger als einer Sekunde verwendet und ein Termin um 23:59:59 + epsilon vorliegt. Generell schlage ich vor, die zweite Variante zu verwenden.
Beide Varianten können einen Index für startTime verwenden, der wichtig wird, wenn die Tabelle wächst.
quelle
date()
,year()
,datediff()
oder ähnliche)00:00:00
. Jetzt machen meine Ergebnisse SinnODER
quelle
Dies für das Datum / Uhrzeit-Format in MySQL mit
DATE_FORMAT(date,format)
.quelle
Es hilft, Sie können die Werte wie
DATE
vor dem Vergleich konvertieren .quelle
Sie können das Feld DATETIME wie folgt in DATE umwandeln:
Das ist sehr effizient.
quelle
startTime
indiziert istSie können auch Vergleichsoperatoren für MySQL-Daten verwenden, wenn Sie nach oder vor etwas suchen möchten. Dies liegt daran, dass sie so geschrieben sind (größter bis kleinster Wert mit führenden Nullen), dass eine einfache Zeichenfolgensortierung sie korrekt sortiert.
quelle