meine Frage wie folgt:Wie vergleiche ich Termine mit nicht Datumsart Felder in mysql
select id,
date
from table
where date < '1/31/2015' && date > '11/31/2011'
meine Frage wie folgt:Wie vergleiche ich Termine mit nicht Datumsart Felder in mysql
select id,
date
from table
where date < '1/31/2015' && date > '11/31/2011'
Wenn Sie das Datum als String liefern, werden einige Formate implizit/automatisch auf den korrekten Datentyp der Spalte, die verglichen werden umgewandelt werden. IE:
SELECT t.id,
t.date
FROM TABLE t
WHERE t.date < '2015-01-31'
AND t.date > '2011-11-31'
Die sichersten Mittel, um ein Datum/Uhrzeit in einer Zeichenfolge zu einem DATETIME- Umwandlung ist die MySQL's STR_TO_DATE function zu verwenden:
WHERE t.date < STR_TO_DATE('1/31/2015', '%m/%d/%Y')
AND t.date > STR_TO_DATE('11/31/2011', '%m/%d/%Y')
Beachten Sie, dass 'STR_TO_DATE' eine Berechnung für jede Zeile Ihrer Tabelle erfordert. Indizes sind nutzlos und bei großen Datensätzen wird es lange dauern. – ceejayoz
@ceejayoz: Sie haben es rückwärts - Indizes auf sind die Spalte, nicht der String-Wert wird konvertiert. Noch ist dies eine RBAR (Zeile für quälende Zeile) Umwandlung des String-Wertes in ein Datum ... –
Wenn die Daten des Benutzers als Strings wie "1/31/2015" gespeichert werden, wird die Indexierung sie nicht viel nutzen um nach Datum zu filtern, und Sie müssen jeden 't.date' Wert durch' STR_TO_DATE' ausführen, um ihn in ein natives Format zu bringen. – ceejayoz
MySQL DATE
und DATETIME
Felder sind im Format YYYY-MM-DD HH:MM:SS
. Wenn Sie keinen integrierten Datentyp verwenden, der Datumsangaben verarbeitet, werden Sie viel mehr Probleme haben.
Darüber hinaus möchte ich nur erwähnen, dass es eine STR_TO_DATE -Funktion gibt, um eine Zeichenfolge in ein gültiges SQL-Datum zu konvertieren. –
Erstens, & & ist nicht der "und" -Operator in SQL; Verwenden Sie UND.
Zweitens sind MySQL-Daten immer ISO-8601. Ich schlage vor, Sie lesen den Standard oder sehen sich einige Beispiele an.
Drittens können Sie die SQL-Funktion zwischen einem Wert in einem Bereich zu finden.
Ich empfehle
a) Die MySQL-Dokumentation
b) Einige Beispiele
Und
c) an einem Trainingskurs Go Lesen, SQL für Anfänger.
Danke für die Antwort, aber ich denke, Sie sind falsch auf den ersten Punkt: http://dev.mysql.com/doc/refman/5.0/en/logical-operators.html#operator_and und ich wünschte, ich könnte eine gebaut verwenden im Datentyp, wodurch BETWEEN und alle anderen Datumsfunktionen möglich wären. Ich benutze einen Longtext-Typ, um diese Daten zu speichern, daher die ziemlich einfache Frage, die ich jetzt glaube, dass es viel mehr Sinn macht - mein Schlechter. – InnateDev
Was ist der Datentyp der 'TABLE.date' Spalte? Die CREATE TABLE-Anweisung würde die Dinge verdeutlichen. –