SQL: zum anzeigen der Datensätze für die nur 30 Tage
Habe ich versucht zu verwenden
SELECT * from Results
WHERE DATEDIFF(d,Date,getdate())<30
Aber es scheint, dass der Fehler mit diesem.
Für jeden Datensatz übermittelt, wird nur die Anzeige 30 Tage. Kann ich wissen, ob meine syntax richtig ist?
Sehr Geschätzt,
Stan
Sind Sie immer einen Fehler, oder sind Sie nicht immer die richtigen Werte?
Was RDMS verwenden Sie?
Ich bin mit Microsoft Frontpage.
Microsoft Frontpage ist nicht ein RDMS, oder sogar und RDBMS. Ist nicht auch eine gute web-Entwicklung system.
Was RDMS verwenden Sie?
Ich bin mit Microsoft Frontpage.
Microsoft Frontpage ist nicht ein RDMS, oder sogar und RDBMS. Ist nicht auch eine gute web-Entwicklung system.
InformationsquelleAutor | 2009-03-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Syntax sieht OK, aber Sie könnten es brauchen, um 'quote'
Date
:Hast du eine Spalte namens Datum in den Ergebnissen?
BTW, das wird nicht in der Lage, einen index verwenden, wohingegen dies:
Up stimmten für den index-Hinweis. Thx
+1 für den query-Optimierung
Warum würden Sie annehmen SQL-Server?
Technisch ist dies nicht die richtige Antwort gegeben, dass der OP (vielleicht) erwähnt, dass es eine Access/Jet-Frage.
InformationsquelleAutor Mitch Wheat
First off, Sie (und die meisten der Antworten in diesem thread) mischen SQL-Varianten. Sie sagte nichts auf Ihre Frage zu SQL Server, und doch bist du immer Empfehlungen über die Verwendung der SQL Server-syntax (D. H., GetDate()).
Die Antwort von JohnFx bietet Ihnen die richtige Jet-SQL-syntax:
Aber er ist auch richtig, dass die Benennung ein Feld "Datum" ist wirklich schlecht in Access/Jet. Die WHERE-Klausel könnte verbessert werden mit:
aber ich kann nicht sicher sagen-ich würde nie Namen ein Feld "Datum" würde so nie stoßen diese Art von problem.
Aber es gibt vielleicht eine einfachere version, gegeben, dass die Jet speichert seine Daten in einem format, bei denen der ganzzahlige Teil zeigt das Datum und die Nachkommastellen die Uhrzeit. Weil das so ist, beim Umgang mit Daten (im Gegensatz zu Wochen oder Monate oder Quartale), die Sie durchführen können, Datum der Mathematik auf Ihnen direkt:
Dadurch erhalten Sie genau die gleichen Ergebnisse wie JohnFx die DateDiff () - version, aber nicht müssen, rufen Sie die DateAdd-Funktion für jede Zeile.
Der Schlüssel ist die Verwendung der richtigen syntax für eine Jet-Datenbank, und das bedeutet, dass das erste argument für die DateAdd() ist ein string-Wert ("d") und dass Sie nicht verwenden können eine SQL Server-Funktion (GetDate()), sondern muss die Jet verwenden, ist die Funktion für den gleichen Zweck (Date()). Aber es ist auch eine gute Idee, vermeiden Sie die Verwendung von Jet/Access-Funktionen in Ihrem SQL, wenn Sie nicht haben, und das ist, warum ich glaube, dass die "Ergebnisse.Datum-30" - version wird besser als die DateAdd () - version.
Beiseite: ich würde mir wirklich wünschen, dass diejenigen, die post Antworten unter SQL würde achten Sie genau auf, welche Datenbank-engine ist der Fragesteller mit der zum ausführen der SQL. Viele der falschen Antworten in diesem thread gefunden genau, weil das Poster nicht die Frage genau Lesen (es war ziemlich klar, von keywords, welche Datenbank-engine beteiligt war).
Hallo David, vielen Dank für die Einsicht und Klärung. Ich hätte eine klarere Frage um Verwirrung zu vermeiden, um allen Beratern. Ich umbenannt und korrigiert den code entsprechend Jets SQL nicht SQL server-Funktion. Es funktioniert jetzt! Sehr Geschätzt Wird. =)
"Besser" liegt im Auge des Betrachters. Ich finde die DateAdd-version kinder auf das Auge, weil die zeitliche Körnchen "d" = am Tag mehr explizit.
Wenn "besser" bedeutet "für hohe Leistung optimieren", dann überlegen Sie sich die Ergebnisse an.Spalte Datum der ersten deklarierte Spalte in der Tabelle eine PRIMARY KEY-Einschränkung zu Gunsten clustering.
Was clued mich in Jet-SQL wurde die MS-Access-tag, und die FrontPage verweisen. Niemand erwähnte SQL Server ("SQL" - tag ist nur generische für SQL-Probleme, Nein?).
InformationsquelleAutor David-W-Fenton
Versuchen Sie dies:
Einer anderen heads-up. Benennen Sie ein Feld "Datum" in Access ist in der Regel eine schlechte Idee. Es ist ein reserviertes Wort und verwenden Sie Klammern [] um Sie in all Ihren Fragen.
InformationsquelleAutor JohnFx
Wenn Sie eine Microsoft Access-Datenbank, die Funktion, um das aktuelle Datum Date() eher als
getdate()
(für SQL Server).InformationsquelleAutor Ron Savage
Ihre Abfrage sieht-sound. Was ist der Fehler, dass Sie laufen?
InformationsquelleAutor Jason
Wollte Sie nicht SQL Server als db. In Access sieht die syntax für die DateAdd: DateAdd("d", 1, "31-Jan-95").
'Streng'? Nein, Sie sind mit dem Begriff 'Jet' lose mit der Bedeutung 'Microsoft Jet und Microsoft Access-Datenbankmodul'. Bedenkt man das Wort "Zugriff" enthalten ist, innerhalb der strengen definition, dann ist es durchaus akzeptabel, bezieht sich auf die "Access-SQL" umgangssprachlich und jeder weiß was gemeint ist.
Viele Menschen tun es. Aber es führt zu einer Menge Verwirrung in den Diskussionen und in den Köpfen vieler Menschen, die nicht die Unterscheidung zwischen der Datenbank-engine (Jet) und Ihre Entwicklungs-Plattform (Zugang).
Das problem ist die Menschen mit der Access-Anwendung erleben Sie verschwenden Ihre Zeit auf der Suche nach Zugang tagged Fragen wie "Wie Verbinde ich eine PHP-Webseite ein .mdb-Datei?" Zugriff hat das nichts zu tun.
InformationsquelleAutor JeffO