Autor Beitrag
D. Annies
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Sa 26.12.09 12:33 
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

_________________
ut vires desint, tamen est laudanda voluntas
Niko S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 566
Erhaltene Danke: 10

Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: 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

_________________
ut vires desint, tamen est laudanda voluntas
JDF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29

WinNT, Win2k, WinXP, Win2003
d6ent, d7pro, bds2006ent, vs2003
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: 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

_________________
ut vires desint, tamen est laudanda voluntas
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Mo 11.01.10 13:18 
Zitat:
Es sollte aber eine Lösung ohne Parameter sein.
Und warum das?

_________________
Markus Kinzler.
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: 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

_________________
ut vires desint, tamen est laudanda voluntas