Entwickler-Ecke
Datenbanken - Datumsfeld auswählen
D. Annies - Sa 26.12.09 12:33
Titel: Datumsfeld auswählen
Hi, Delpher,
ich möchte mit dem SQL von D6 verschiedene Geburtstagsabfragen starten, z.B.
1. select name, vorname, gebdat, klasse FROM "%s" S WHERE (month(gebdat) = 12) ORDER by
gebdat
2. select name, vorname, gebdat, klasse FROM "%s" S WHERE (month(gebdat) = 12) or
(month(gebdat) = 1) ORDER by gebdat
3. select name, vorname, gebdat, klasse FROM "%s" S WHERE (gebdat > 1995/12/12) and
(gebdat < 1995/12/30) ORDER by gebdat
Nr. 1 und 2 funktionieren so auch, obwohl die Sortierfolge nach gebdat gewöhnungsbedürftig ist.
Nr. 3 funzt so nicht, ohne Fehlermeldung, es werden nur keine Daten gefunden.
Wer kann da helfen?
Gruß, Detlef
Niko S. - Sa 26.12.09 13:34
vielleicht nach dem Zeitstempel auflösen und nachgucken ob über und unter der "Sekundenzahl" ist?
Aber ich weiß jetzt nicht aus dem Stehgreif wie dafür der Befehl lautet, aber das wäre eine Möglichkeit ;x
D. Annies - Sa 26.12.09 21:24
Danke, Niko,
hilft mir leider noch nicht weiter.
Habe mich bisher aber auch nur erfolglos weiter bemüht =
Stochern im Nebel, wenn man die Syntax nicht kennt ::<
Gruß, Detlef
JDF - Di 29.12.09 20:02
Hallo Detlef,
in deiner 3. Abfrage könnte das Problem an der Datumsinterpretation deiner Datenbank liegen.
Die Datumsangaben sollten als Zeichenkette in Hochkommas eingeschlossen sein.
Einige Datenbanken akzeptieren auch die Darstellung '2009-12-30'.
Wenn die geforderte Darstellung für die Datenbank unklar ist, kannst Du die Datumsgrenzen auch als Parameter eingeben.
select name, vorname, gebdat, klasse FROM "%s" S WHERE (gebdat > :DATUM_VON) and
(gebdat < :DATUM_BIS) ORDER by gebdat
Query1.ParamByName('DATUM_VON').AsDate := StrToDate('12.12.1995');
Query1.ParamByName('DATUM_BIS').AsDate := StrToDate('30.12.1995');
Du kannst in der Hilfe Infos zu ParamByName finden.
Gruß
Jürgen
D. Annies - Sa 09.01.10 18:04
Hi, Jürgen,
vielen Dank für deine Lösung - ich habe sie leider erst jetzt gesehen.
Es sollte aber eine Lösung ohne Parameter sein. Die habe ich mittlerweile sogar selbst gefunden, nach dem Motto: morgens aufgewacht - äh, probier doch mal das hier:
select name, vorname, gebdat, klasse FROM "%s" S WHERE (month(gebdat) = 12) and
(day(gebdat) between 20 and 31) or (month(gebdat) = 1) and
(day(gebdat) between 1 and 7) ORDER by gebdat
und die Zahlen kann ich dann jeweils editieren.
Bis denn mal,
Detlef
mkinzler - Mo 11.01.10 13:18
| Zitat: |
| Es sollte aber eine Lösung ohne Parameter sein. |
Und warum das?
D. Annies - Do 21.01.10 20:24
Damit ich den Befehl aus einer Textdatei heraus aufrufen und ausführen kann.
(Habe erst eben deine Frage gesehen)
Det
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!