Mal ein anderes Datumsproblem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mal ein anderes Datumsproblem

    Hallo..

    ich bin schon ziemlich am Ende, weil ich schon in 3 Foren rumgefragt habe, und nie die endgültige Lösung gepostet wurde.

    Also eigentlich geht es um VisualBasic und Datenbanken, aber letztlich geht es auch um eine SQL Query. Also ich habe eine Access Datenbank. In ihr existiert das Feld Zuletztentliehen. Hier wird das Datum abgespeichert, an dem das Mitglied zuletzt etwas ausgeliehen hat. Jetzt sollen Karteileichen ausfindig gemacht werden. Also Mitglieder die Seit länger als 1 Jahr nicht aktiv waren.

    So nun meine SQL Query

    SELECT * FROM tblMitglieder WHERE Zuletztentliehen < date - 365

    so, das klappt aber nicht. Er verlgeicht immer nur den Tag. Also der 15.05.2001 ist kleiner als der 16.09.2002. Weil ja 15 kleiner ist.

    Im feld zuletztentliehen steht das Datum im Format 12.06.2002

    Das ist Automatisch so, und ist auch gut, da es nunmal einfach die Deutsche Schreibweise ist. Man hat mir erzählt, das für SQL das Datum aber immer im Format 12/06/2002. Der Befehl DATE_FORMAT(..) funktioniert nicht, es ist ein unbekannter Befehl.

    Hat jemand eine Idee ? Oder irgendeinen Vorschlag ?
    (Achja, nochwas zuletztentliehen ist ein Textfeld. Aber ich habe es auch schon als Datumsfeld deklariert, klappt aber genausowenig !)

    Danke im Vorraus

    Gruß
    Phphil

  • #2
    Naja, Grundsätzlich sollte Zuletztentliehen natürlich ein Datumsfeld sein. Es lässt sich in Access-SQL sicher eine Abfrage bauen (DATE_FORMAT o.ä.), die das deutsche Datumsformat ins SQL-Format umwandelt (vielleicht auch mit CONCAT), das ganze wird dadurch aber extrem langsam. Ich empfehle, das Feld *einmal* in ein anständiges Datumsformat umzuwandeln, damit Du deine "date-365"-Abfrage laufenlassen kannst.

    In mySQL würds ungefähr so aussehen (ungetestet!)

    UPDATE tabellenname SET Zuletztentliehen = CONCAT (SUBSTRING(Zuletztentliehen, 7,4),"-",SUBSTRING(Zuletztentliehen,4,2),"-",SUBSTRING(Zuletztentliehen,1,2));

    Aus dem 16.06.2002 wird dann 2002-06-16, vorausgesetzt Tage und Monate kleiner Zehn sind mit einer führenden Null abgelegt. Danach sollte die Umdeklarierung zum Datumsfeld den gewünschten Erfolg bringen. Auf jeden Fall vorher Backup machen, habs nicht getestet!

    Kommentar

    Lädt...
    X