Falsche syntax in der Nähe ',' (innerhalb der Daten nicht funktioniert)
Ich bin immer die oben genannten SQL-Fehler nach dem ausführen dieser Abfrage.
SELECT r.SectionIDNum, r.PeopleIDNum, r.Completed, c.CourseID, s.DistrictIDNum, s.EndDate
FROM Registration r, Course c, Section s
WHERE r.SectionIDNum=s.SectionID AND c.CourseID=s.CourseIDNum AND r.Completed='Y'
AND s.EndDate between ('2012-06-31', 'yyyy-mm-dd') and ('2013-07-01', 'yyyy-mm-dd')
Anscheinend die Kommas in den Daten sind den Fehler verursacht aber ich weiß nicht, wie es zu lösen ist.
Was DBMS verwenden Sie?
In der Regel
SQL Server 2008 R2
Sie sollten immer tag SQL Fragen mit den spezifischen DBMS, denn es gibt viele Unterschiede zwischen Ihnen.
In der Regel
('2012-06-31', 'yyyy-mm-dd')
im Rahmen von Datums-Konvertierung. So fehlt der name der Funktion hier. E. g. für eine Oracle-DBMS der richtige Weg sein sollte to_date('2012-06-31', 'yyyy-mm-dd')
SQL Server 2008 R2
Sie sollten immer tag SQL Fragen mit den spezifischen DBMS, denn es gibt viele Unterschiede zwischen Ihnen.
InformationsquelleAutor Esther | 2013-06-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie die CAST () - Funktion (CAST wandelt den Wert von einem Datentyp in einen anderen Typ. In diesem Fall CHAR zu DATETIME):
Könnte man auch verwenden:
TO_DATE is not a recognized built-in function name.
ich vermute, das Flicken ist für Oracle-DBMS?Ich nahm an, Sie waren mit Oracle-basierend auf deinem Beispiel. Ich aktualisiert meine Antwort für SQL SERVER
Vielen Dank! Ich habe Ihre aktualisierten code, aber jetzt heißt es
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
Können Sie bitte helfen?Überprüfen, um zu sehen, ob die SQL -, die Sie lief passt mein Beispiel, ich habe es mehrere Male.
31-JUN-2012
ist out of range, seit Juni hatte nur 30 Tage im Jahr 2012.InformationsquelleAutor Zzz
Juni nur 30 Tage hat. Also der SQL Server ist verwirrt durch Ihre Anfrage zu wirken. Juni-31 als ein Datum.
Dieser gut funktioniert:
Einen Weg, um am Ende des Monats Probleme ist die Verwendung der
DATEADD()
Funktion, zum Beispiel, bekommt man ein Jahr und einen Tag vor dem 1. Juli 2013 wie in deinem Beispiel:Denken Sie auch daran, dass
BETWEEN
ist inclusive, so dass Sie bekommen 30. Juni und 1. Juli in Ihrem Beispiel, das vielleicht nur subtrahieren des im Jahr ist ausreichend.BETWEEN
ist inclusive, denn das wusste ich nicht.InformationsquelleAutor Hart CO